你的程序要读入一行文本,其中以空格分隔为若干个单词,以 . 结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如 it’s 算一个单词,长度为 4。注意,行中可能出现连续的空格;最后的 . 不计算在内。
输入格式:
输入在一行中给出一行文本,以 . 结束
提示:用 scanf(“%c”,…); 来读入一个字符,直到读到 . 为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It’s great to see you here.
结尾无空行
输出样例:
4 5 2 3 3 4
结尾无空行
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/14/exam/problems/806
提交:
题解:
#include<stdio.h>
int main() {
char ch;
int wordLen = 0;
// flag 记录当前是否是最后一个单词:[0]不是 [1]是,用于控制最后一个空格是否输出
int flag = 1;
while (1) {
scanf("%c", &ch);
// 以空格分割单词、以 . 结束输入
if (ch == ' ' || ch == '.') {
// 单词长度有效则输出单词
if (wordLen) {
// 不是最后一个单词则输出空格
if (flag == 0) {
printf(" ");
}
printf("%d", wordLen);
wordLen = 0;
flag = 0;
}
// 继续 or 结束
if (ch == ' ') {
continue;
} else {
break;
}
}
wordLen++;
}
return 0;
}