題目要求: 輸入一個英文句子,翻轉句子中的單詞順序。但單詞內的順序不變。句子中單詞空格隔開。 為簡單起見,標點符號和普通字母一樣處理。 例如輸入"I am a student.",則輸出 student. a am I 題目解答: [cpp] void StrOL(void) { int i,j,len; int start=0,end=0; char buf; for (i=0; i<maxline; i++) { len=strlen(xx[i]); //該循環的作用是將行數據中的非字母數據置為空格字符,例如i am a student.運算後為i am a student t後含有空格 for (j=0; j<len; j++) { if (!isalpha(xx[i][j]) && xx[i][j]!=' ') { xx[i][j] = ' '; } } strrev(xx[i]);//字符串倒置函數,將該行數據整體進行倒置,變為 tneduts a ma i //該段程序的作用是將以空格分隔的小字符串進行倒置 for(j=0;j<len;j++) { if(isalpha(xx[i][j])) { start=j;//此時start指針指向t while(isalpha(xx[i][j]))j++; end=j-1;//此時end指針指向s while(start<end) { www.2cto.com buf=xx[i][start]; xx[i][start]=xx[i][end]; xx[i][end]=buf; start++; end--; } } } } }