1樓:匿名使用者
這個,假設你的word[4]=;
這時 word.size() =4
那麼for迴圈這樣工作!
j=0 i=word.size() -1=3temp = word[i]; -->temp='d'
word[i] = word[j]; -->word[i]='a'
word[j] = temp; -->word[j]='d'
這時j=1,i=2
temp = word[i]; -->temp='c'
word[i] = word[j]; -->word[i]='b'
word[j] = temp; -->word[j]='c'
2樓:匿名使用者
word.size()返回串word的長度len,即i的初值為n,而j的初值為0,首次交換的是word[0]和word[n - 1],然後執行--i和++j,第二次交換word[1]和word[n - 2],以此類推......,直到j = i止。
交換過程是:
temp = word[i]; // 暫存word[i]
word[i] = word[j]; // 將word[j]付給qord[i]
word[j] = temp; // 再將word[i]賦給word[j]
如果將中間的一句改為word[j] = word[i];,則不能完成交換過程,
3樓:叫我啊
j 是記錄該字串的首地址位置
i 是最後一個位置··因為下標是從0開始 所以 word.size() - 1 表示他的末位置
然後對該字串一個一個字元取,i的位置往前走,j的位置往後走,直到i的位置跟j的位置相遇或者j的位置大於i的位置說明交換完了 迴圈體是做一個簡單的資料交換工作。
4樓:落葉繁華盡
char temp;//定義一個字元型的中間變數int i, j;
for (j = 0, i = word.size() - 1/*計算輸入字串的長度*/; j < i; -- i, ++ j)
//--i,++j迴圈完之後字串就逆置了
5樓:匿名使用者
abcdefghijklmn
j i
j指向的字元與i指向的字元進行交換。
6樓:匿名使用者
第一個與最後一個,第二個與倒數第二個……(依此類推)交換
7樓:匿名使用者
這是因為賦值語句決定的
問C語言的小問題,問一個C語言的小問題
你就把取值範圍理解成一個圓圈,int取值範圍 32768 32767 超過了32767 最大數 就繞一圈到 32768 最小數 再從最小數開始往上加 所以會是 1懂了麼 上面程式不能正確執行 就異常退出咯 得到的就是 1 為什麼不能正確執行 1 你的unsingned出錯 應該是unsigned啦 ...
c語言,小問題
樓主,經我除錯後,回答如下 希望能給你幫助!問題一 我的回答為什麼一定要加空格,可不可以取消空格。如隨機生成158,我要輸入1 5 8才算正確.回答 該程式中採用scanf語句來接收字元,scanf在接收到空格或者回車的時候才會認為輸入結束,所以必須要加空格才算正確。要想解決該問題,需要把隨機數儲存...
物理小問題,一個物理小問題
理想情況,不考慮空氣阻力等,只考慮外界重力的的情況下 水瓶和水都只受到重力的影響,以相同的重力加速度沿重力方向勻加速運動.直至落地.但是,在現實中,肯定有空氣,那麼我們在上述推論過程中再加上空氣阻力的影響,情況就不同了 瓶子受到重力和空氣阻力的雙重影響,這兩個力是方向相反的,那麼瓶子下降的加速度就會...