#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 );}程序運(yùn)行后的輸出結(jié)果是A) ?012345B) ?876543210C) ?876543D) ?012345678沒(méi)動(dòng)這個(gè)結(jié)果怎么出來(lái)的 ?答案是A
2 回答
已采納

asd8532
TA貢獻(xiàn)143條經(jīng)驗(yàn) 獲得超187個(gè)贊
首先理解fun的意義
fun(s,m1,m2);//從s的m1位置到m2位置對(duì)調(diào)
?fun( ss,0,n-1 ); //0<n-1所以fun的while為假,不執(zhí)行
? fun( ss,9,n );;//0 1 2 3 4 5 6 7 8 /0共10,9到6的位置對(duì)調(diào)變成0 1 2 3 4 5 /0 8 7 6 ?而/0是終止符號(hào),所以輸出到5的時(shí)候就停止了
? ? fun( ss,0,9 );//0<9所以fun的while為假,不執(zhí)行

望遠(yuǎn)
TA貢獻(xiàn)1017條經(jīng)驗(yàn) 獲得超1032個(gè)贊
這里一共有10個(gè)字符,最后有一個(gè)'\0',第一個(gè)和第三個(gè)fun函數(shù)因?yàn)椴粷M足while條件直接跳出,只有第二個(gè)fun函數(shù)改變了字符串,它的作用是讓第7-10個(gè)字符逆置,所以\0在第7個(gè)字符,輸出的時(shí)候輸出了012345六個(gè)字符。
- 2 回答
- 0 關(guān)注
- 1777 瀏覽
添加回答
舉報(bào)
0/150
提交
取消