问题
单项选择题
有以下程序:
#include <stdio.h>
#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 str[10] :"abedefg", * p;
p = str + strlen(str)/2+1;
f(p,p -2);
printf( "% s \n" ,str);
程序运行后的输出结果是( )。
A.abcdefg
B.gfedcba
C.gbcdefa
D.abedcfg
答案
参考答案:B
解析: 本程序的作用是将字符串str倒序。语句p=str+strlen(str)/2+1;将指针变量p指向字符’e’所在的存储单元,P-2指向字符,’c’所在的存储单元,在函数f中将这两个存储单元的内容交换,然后将f函数中指向字符’e’的指针变量s加1,指向字符’c’的指针变量t减1,继续将s和t指向的存储单元的内容进行交换,直到s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串"abcdefe”的倒序形式"gfedcba"。