題目描述:(總結C語言字符串的用法)測試
給定一句英語,要求你編寫程序,將句中全部單詞的順序顛倒輸出。 輸入格式: 測試輸入包含一個測試用例,在一行內給出總長度不超過 80 的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多餘的空格。 輸出格式: 每一個測試用例的輸出佔一行,輸出倒序後的句子。 輸入樣例: Hello World Here I Come 輸出樣例: Come I Here World Hello
本人AC代碼:spa
方法一:(改進版)blog
// 1009 說反話 (20 分) // 給定一句英語,要求你編寫程序,將句中全部單詞的順序顛倒輸出。 // 時間 2019年7月15日 # include <stdio.h> # include <string.h> int main(void) { char S[100]; int tail, head; // 讀入字符串 gets(S); int len = strlen(S); head = tail = len-1; for (int i=len-1; i>=0; i--) { if (S[i] == ' ' || i==0) { head = i; for (head; head<=tail;head++) { if (S[head] != ' ') printf("%c",S[head]); } tail = i; if (i != 0) printf(" "); } } return 0; }
方法二:(初級版)(我已經不是當初寫方法二時的我了,我也不知道咋想的 0.0)字符串
// 1009 說反話 (20 分) // 給定一句英語,要求你編寫程序,將句中全部單詞的順序顛倒輸出。 // 時間 2019年2月6日 # include <stdio.h> # include <stdlib.h> int main(void) { char S[100]; char ch; int i, j; int n; // 記錄字符串的長度 int new_head, head, tail; for (i=0; i<100; i++) { S[i] = getchar(); if (S[i] == 10) // 換行符的ASCII碼值爲 10 當遇到就中止輸入 break; } n = i; new_head = 0; for (i=0; i<n; i++) { tail = i; // 處理出去最後一組以外的全部字符 if (S[i] == 32) { tail--; head = new_head; for (j=head; j<tail; j++) { ch = S[head]; S[head] = S[tail]; S[tail] = ch; head++; tail--; if (head>=tail) break; } new_head = i+1; } // 處理最後一個單詞 if (i == n-1) { tail = n-1; head = new_head; for (j=head; j<tail; j++) { ch = S[head]; S[head] = S[tail]; S[tail] = ch; head++; tail--; if (head>=tail) break; } } } for (i=n-1; i>=0; i--) { printf("%c",S[i]); } return 0; }