A-A+
有以下程序: #include <stdio.h>#include <string.h>vo
问题详情
有以下程序: #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"。