#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 關注
- 1782 瀏覽
添加回答
舉報
0/150
提交
取消