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

admin2013-02-23  37

问题 有以下程序: #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

答案2

解析 本程序的作用是将字符串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"。
转载请注明原文地址:https://kaotiyun.com/show/iiPp777K
0

最新回复(0)