问题
单项选择题
有以下等程序
#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
答案
参考答案:B
解析: 本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数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。