描述
编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词)
输入描述:
输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。
输出描述:
可能有多组测试数据,对于每组数据, 输出字符串中每个单词包含的字母的个数。
示例1
输入:
hello how are you.
输出:
5 3 3 3
答案1
#include <stdio.h>
int main() {
char input[100];
int count = 0;
int i = 0;
while (1) {
scanf("%c", &input[i]);
// 如果读取到空格或句点,则说明一个单词结束
if (input[i] == ' ' || input[i] == '.') {
printf("%d ", count);
count = 0; // 重置单词长度计数器
// 如果读取到句点,则跳出循环
if (input[i] == '.')
break;
} else {
count++; // 统计当前单词的长度
}
i++;
}
return 0;
}
答案2
#include <stdio.h>
int main() {
char input[1000]; // 存储输入的字符串
int word_count = 0; // 统计单词数量
int char_count = 0; // 统计当前单词的字符数
// 读取输入的字符串,直到遇到句点为止
while (1) {
// 读取输入的字符
char c = getchar();
// 判断是否为单词字符
if (c != ' ' && c != '.') {
char_count++; // 统计字符数
}
// 判断是否为单词结束
else if (char_count > 0) {
printf("%d ", char_count); // 输出当前单词的字符数
char_count = 0; // 重置字符数计数器
word_count++; // 单词数量加一
}
// 判断是否遇到句点,如果是则结束循环
if (c == '.') {
break;
}
}
return 0;
}
详解
1.可以用getchar函数依次读入字符。
要点
1.scanf()
函数是以空格、制表符或换行符作为分隔符来解释输入的,它无法直接读取包含空格的字符串,也无法直接读取一行字符串直到句点结束。