有以下等程序#include <string. h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s, t);}main (){

admin2009-01-15  29

问题 有以下等程序#include <string. h>void f(char *s, char *t){ char  k;   k=*s; *s=*t; *t=k;   s++;        t--;   if(*s)  f(s, t);}main (){ char stt[10] ="abcdefg", *p;    p=str+strlen (str)/2+1;    f (p,p-2);    print f ( "%s\n", str);}

选项 A、abcdefg
B、gfedcba
C、gbcdefa
D、abedcfg

答案2

解析 本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数f()就是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动一位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了一个字符数组sTR[10]="abcdefg",然后定义了一个字符指针 p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置.然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的3tr[2]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。
转载请注明原文地址:https://jikaoti.com/ti/IbK0FFFM
0

最新回复(0)