此題為簡化版,題設為“以'.'結尾”、“單詞與語言無關”。三種情況下的輸入輸出為
. -> 無輸出
a b. ->1 1(無空格)
a b . ->1 1(無空格)
程序中為了讓最後不輸出空格,設置了一個bool型的flag,輸出了數字時將flag置為真,輸出下一個數時如果flag為真則先輸出一個空格,題設要求及代碼實現如下
/* Name: Copyright: Author: Date: 31/03/15 21:16 Description: 你的程序要讀入一行文本,其中以空格分隔為若干個單詞,以‘.’結束。你要輸出每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如“it's”算一個單詞,長度為4。注意,行中可能出現連續的空格;最後的‘.’不計算在內。 輸入格式: 輸入在一行中給出一行文本,以‘.’結束。 提示:用scanf("%c",...);來讀入一個字符,直到讀到‘.’為止。 輸出格式: 在一行中輸出這行文本對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。 輸入樣例: It's great to see you here. 輸出樣例: 4 5 2 3 3 4 */ #include <stdio.h> #include <stdbool.h> int main() { // freopen("in.txt", "r", stdin); // for test char ch; int cnt; bool flag; flag = false; cnt = 0; 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); } // fclose(stdin); // for test return 0; }