此題為簡化版,題設為“以'.'結尾”、“單詞與語言無關”。三種情況下的輸入輸出為
. -> 無輸出
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;
}