這是一道經典的 PAT(程序設計能力測試)基礎題目,要求讀入一行以句點(.)結尾的文本,按空格分隔單詞,輸出每個單詞的長度。題目簡化了條件:單詞與語言無關,可包含各類符號(如 "it's" 視為長度 4 的單詞),連續空格需正確處理,且輸出末尾不得有多餘空格。
程序採用字符流處理策略,逐字符讀取直到遇到句點。關鍵在於狀態管理:
cnt 累計當前單詞長度(非空格字符)cnt > 0 時,輸出長度並重置計數器flag 標記是否已輸出過長度,控制空格輸出邏輯#include <stdio.h>
#include <stdbool.h>
int main() {
char ch;
int cnt = 0;
bool flag = false;
while ((ch = getchar()) && ch != '.') {
if (ch != ' ') {
cnt++;
} else if (cnt != 0) {
if (flag) printf(" ");
printf("%d", cnt);
flag = true;
cnt = 0;
}
}
if (cnt != 0) {
if (flag) printf(" ");
printf("%d\n", cnt);
}
return 0;
}
| 輸入 | 輸出 | 說明 |
|---|---|---|
| . | (無輸出) | 空輸入直接結束 |
| a b. | 1 1 | 連續空格正確處理 |
| a b . | 1 1 | 句點前空格不影響 |
| It's great to see you here. | 4 5 2 3 3 4 | 含撇號單詞正確計長 |
此題考察基本輸入處理、狀態機設計及邊界條件控制,是 C 語言初學者掌握字符流處理的優秀練習。