c++语言

来源:百度知道 编辑:UC知道 时间:2024/06/27 15:41:02
单选题 (目前有 61 道)
题干: 下面程序的运行结果是____
# include <stdio.h>
# include <string.h>
fun(char *s)
{ char t,*a,*z;
a=s; z=s+strlen(s)-1;
while(a++<z--)
{ t=*a++; *a=*z--; *z=t;}
}
main()
{ char *p;
p="abcdefg";
fun(p);
puts(p);
}

选择项: A:abdddfg
B:afcdebg
C:gbedcfa
D:gfedcba

我怎么做的答案是abfdcfg

答案是A

while(a++<z--) 第一次进入循环时可以看成a指向字符串abcdefg的a,z指向g,
然后a++和z--,那就t='b'(由于前面a++这时a指向了b)++;
‘c’(这时a++了,所以指向c)=‘f’(由于前面z--这时b指向f)--;
‘e’= t(t=‘b’)
第一次循环后变成 abfdbfg
这时a指向第三个字母也就是’f‘,b指向第五个字母也是就’b‘,3<5,条件还成立,在进行一次以上替换就得到了abdddfg了
即t=’d‘;’b‘=’d‘;’f‘=’d‘