#include <string.h>void fun( char *s, int m1, int m2 ){ char t, *p; p=s + m1; s= s+m2; while( s<p ) { t=*s; *s=*p; *p=t; s++; p--; }}main(){ char ss[10]="012345678"; int n=6; fun( ss,0,n-1 ); fun( ss,9,n ); fun( ss,0,9 ); printf("%s\n", ss );}程序运行后的输出结果是A) 012345B) 876543210C) 876543D) 012345678没动这个结果怎么出来的 答案是A
2 回答
已采纳
asd8532
TA贡献143条经验 获得超187个赞
首先理解fun的意义
fun(s,m1,m2);//从s的m1位置到m2位置对调
fun( ss,0,n-1 ); //0<n-1所以fun的while为假,不执行
fun( ss,9,n );;//0 1 2 3 4 5 6 7 8 /0共10,9到6的位置对调变成0 1 2 3 4 5 /0 8 7 6 而/0是终止符号,所以输出到5的时候就停止了
fun( ss,0,9 );//0<9所以fun的while为假,不执行
望远
TA贡献1017条经验 获得超1032个赞
这里一共有10个字符,最后有一个'\0',第一个和第三个fun函数因为不满足while条件直接跳出,只有第二个fun函数改变了字符串,它的作用是让第7-10个字符逆置,所以\0在第7个字符,输出的时候输出了012345六个字符。
- 2 回答
- 0 关注
- 1718 浏览
添加回答
举报
0/150
提交
取消