亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不知道這么晚了還有木有然幫我看一下

不知道這么晚了還有木有然幫我看一下

C C# C++
kathria 2017-03-24 21:32:36
#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為假,不執行


查看完整回答
1 反對 回復 2017-03-24
  • kathria
    kathria
    謝謝你了。大晚上還幫我解答
?
望遠

TA貢獻1017條經驗 獲得超1032個贊

這里一共有10個字符,最后有一個'\0',第一個和第三個fun函數因為不滿足while條件直接跳出,只有第二個fun函數改變了字符串,它的作用是讓第7-10個字符逆置,所以\0在第7個字符,輸出的時候輸出了012345六個字符。
查看完整回答
反對 回復 2017-03-24
  • kathria
    kathria
    你說的十個字符包涵&#039;\0&#039;嗎?你說的十個還是只是s[10]這個里面的十。為什么第一個跳出循環了。地址往后移了5個。不應該指到4了嗎?前面不是指的數字是0嗎
  • 望遠
    望遠
    就是加上\0一共有10個字符,所以數組下標并沒有越界,合法,雖然第一個fun函數確實讓兩個指針指向了0和4,但是while條件不成立,并沒有改動字符串,同理第三個fub函數。
  • kathria
    kathria
    我懂了謝謝了。剛才理解錯了
  • 2 回答
  • 0 關注
  • 1782 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號