1009 說反話(類似迴文字串)
阿新 • • 發佈:2021-02-09
題目:
https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960
1009 說反話 (20 分)
給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。
輸入格式:
測試輸入包含一個測試用例,在一行內給出總長度不超過 80 的字串。字串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多餘的空格。
輸出格式:
每個測試用例的輸出佔一行,輸出倒序後的句子。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
思路:取自胡凡的《演算法筆記》
1 #include <stdio.h> 2 #include <cstring> 3 int main() 4 { 5 char s[266]; 6 gets(s); 7 8 char s2[80][80]; 9 int r = 0, c = 0; 10 11 int len = strlen(s); 12 for (int i = 0; i <= len; i++) 13 { 14 if (s[i] != ' ') 15 s2[r][c++] = s[i]; 16 else 17 { 18 s2[r][c] = '\0'; //給每個單詞後面新增'\0' 19 r++; 20 c = 0; 21 } 22 23 } 24 25 //r是最後一個單詞的下標,因為最後一個單詞讀取的時候並沒有使r++; 26 27 for (int i = r; i >= 0; i--) 28 { 29 printf("%s", s2[i]); 30 if (i != 0) 31 printf(" "); 32 else 33 printf("\n"); 34 } 35 36 37 return 0; 38 }
法二:
1 #include <stdio.h> 2 3 int main() 4 { 5 char str[80][80]; 6 int i = 0; 7 while (scanf("%s", str[i]) != EOF) 8 i++; 9 10 for (int j = i - 1; j >= 0; j--) 11 { 12 printf("%s", str[j]); 13 if (j == 0) 14 printf("\n"); 15 else 16 printf(" "); 17 } 18 19 return 0; 20 }