C语言用数组实现输入一行英文句子,统计其中有多少个单词,单词之间用空格分开,单独的数值不计入单词数。
时间: 2023-12-26 19:10:02 浏览: 43
可以按照以下步骤实现:
1. 定义一个字符串数组 `str` 来存放输入的英文句子。
2. 通过 `fgets()` 函数从标准输入中读取一行英文句子,存放到 `str` 中。
3. 定义一个变量 `count` 来记录单词数,初始值为 0。
4. 遍历 `str` 中的每个字符,如果当前字符是空格,则说明前面是一个单词,将 `count` 加 1。需要注意的是,如果前面的字符是数字或者标点符号,也不能算作单词。
5. 输出统计结果,即单词数。
下面是具体的代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[1000];
printf("请输入一行英文句子:");
fgets(str, 1000, stdin);
int i, count = 0;
for (i = 0; str[i] != '\0'; i++) {
if (isspace(str[i])) { // 判断当前字符是否为空格
if (isalpha(str[i - 1])) { // 判断前一个字符是否是字母
count++;
}
}
}
if (isalpha(str[i - 2])) { // 如果最后一个字符是字母,则单词数加 1
count++;
}
printf("单词数为:%d\n", count);
return 0;
}
```
需要注意的是,在判断前一个字符是否是字母时,需要用到 `<ctype.h>` 头文件中的 `isalpha()` 函数,该函数用来判断一个字符是否是字母。同时,在遍历完整个字符串后,还需要判断最后一个字符是否是字母,如果是,则单词数也需要加 1。