C语言【题目描述】:输入一行英文句子,统计单词的个数并输出。(各个单词间用空格隔开,空格数可以是多个) 【测试样例1】 输入:Love me, love my dog. 输出:5
时间: 2024-02-13 22:00:19 浏览: 19
好的,下面是这道编程题的思路和代码实现。
思路:
读入一行英文句子后,遍历句子中的每个字符,当遇到空格时,判断前面的字符是否为单词的结尾,若是,则将单词计数器加一。需要注意的是,如果句子末尾没有空格,最后一个单词可能会被漏掉,因此需要再次判断一次。
代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int main()
{
char sentence[101];
int word_count = 0, is_word_end = 1;
printf("请输入一个英文句子:");
fgets(sentence, sizeof(sentence), stdin); // 读入一行英文句子
for (int i = 0; sentence[i] != '\0'; i++) {
if (isspace(sentence[i])) { // 判断是否为空格字符
is_word_end = 1;
} else {
if (is_word_end) { // 判断是否为单词结尾
word_count++;
is_word_end = 0;
}
}
}
// 如果句子末尾没有空格,则最后一个单词可能会被漏掉
if (!isspace(sentence[strlen(sentence) - 1])) {
word_count++;
}
printf("单词个数:%d\n", word_count);
return 0;
}
```
注意:需要用到 ctype.h 头文件中的 isspace() 函数来判断一个字符是否为空格字符。另外,fgets() 函数会在读取完一行字符串后自动添加一个换行符,因此需要在计算字符串长度时减去一个字符。