1樓:匿名使用者
看ss函式裡
首先while迴圈的條件為*s,當第一次執行時,*s == 'a',字母'a'不為0,即為真。
在看後面的s++,該句是將指標前移,移動到下乙個字元,則下一次的while條件為'b',依次類推。
當指標移到*s == 'd'時,就滿足了if 條件,則執行*s = t - 'a' + 'a';該語句的意思是將變數t中存放的字元的ascii值減去字母'a'的ascii值,然後再加上大寫字母'a'的ascii值,其結果剛好是把小寫字母轉換為大寫字母,(如t的值為'd',則為:100 - 97 + 65 = 68,68是大寫字母'd'的ascii值),最後將該值儲存在指標s指向的位置,所以就把字串中的所有小寫'd'換成了大寫'd'。
當指標移動到字串結尾時,由於字串是以'\0'結尾的,其值為0,則while條件為假,即退出迴圈!
最後還有一點,因為ss函式的第乙個引數是傳遞的指標,所以改變其指向的值也將影響到main函式中的str1,所以最後輸出的是經過ss函式改變後的字串!
2樓:匿名使用者
if(*s==t)*s=t-'a'+'a'; 這句的意思是發現一樣的就,將其大寫化
我姑且認為我解釋這麼多,你就可以理解了,恩
3樓:
void ss(char *s,char t) //統計這個字串有幾個t。
} main()
4樓:
滿足條件後,會執行*s=t-'a'+'a';
相當於*s=t-32;
就是把小寫變成大寫了;
一道c語言題,求解答,謝謝啦,求解一道c語言題
a選項,pp i j 非法,抄不能表示陣列a中元襲素的bai位址。c選項,p i j 表示的是數du組a某個元素的zhi內容,而不是元dao素的位址。d選項,p無法表示陣列a元素的位址,p是乙個指標陣列,從它取一遍才能得到陣列a元素的位址。求解一道c語言題 函式fun中有c,但是那個c只屬於函式fu...
一道數學題,求解答一道數學題,求解答!
設他有x歲 1 2 3 x 231 1 x x 2 231 x平方 x 462 0 x 22 x 21 0 x1 21歲 x2 22 不合題意 231 3 7 11 可以這樣想,把他的第乙個蛋糕和最後乙個蛋糕加起來算一組,也就是取中間數。那麼通過上面的式子可以看出,中間數是11,一共有3 7 21個...
一道數學題求解答。一道數學題 求解答。
親您好。我們可以先思考,當獵人抓到了10只兔子而不是10000只的時候,幾號兔子會被當成晚餐。首先 號兔子會離開,因為它們報出了 1 接著 號兔子會離開,因為它們在這一輪也報出了 1 最後,4號兔子會離開,因為它報出了 1 因此,8號兔子最終會被做成晚餐。那麼以同樣的邏輯,我們看如果一開始是20只兔...