用C实现写一个程序读入一条句子中的所有单词,显示如下指定长度的单词的数目: (a) 1 (b) 2 to 5 (c) 6 to 10 (d) 11 to 20 (e) 大于等于21 假定句子以换行结束,单词间用空格分隔,并且每个单词长度不超过25个字符。 **提示信息:"请输入一行字符:" **输出格式要求: "长度为1的单词数:%d\n" "长度在2到5的单词数:%d\n" "长度在6到10的单词数:%d\n" "长度在11到20的单词数:%d\n" "长度大于等于21的单词数:%d\n"
时间: 2024-02-03 12:14:15 浏览: 74
下面是用 C 语言实现的程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 25
int main() {
char sentence[MAX_LEN * 100 + 1];
int len1 = 0, len2to5 = 0, len6to10 = 0, len11to20 = 0, len21plus = 0;
printf("请输入一行字符:\n");
fgets(sentence, MAX_LEN * 100, stdin); // 从标准输入中读入字符串
char* p = strtok(sentence, " "); // 使用空格分隔字符串
while (p != NULL) {
int len = strlen(p);
if (len == 1) {
len1++;
} else if (len >= 2 && len <= 5) {
len2to5++;
} else if (len >= 6 && len <= 10) {
len6to10++;
} else if (len >= 11 && len <= 20) {
len11to20++;
} else if (len >= 21) {
len21plus++;
}
p = strtok(NULL, " ");
}
printf("长度为1的单词数:%d\n", len1);
printf("长度在2到5的单词数:%d\n", len2to5);
printf("长度在6到10的单词数:%d\n", len6to10);
printf("长度在11到20的单词数:%d\n", len11to20);
printf("长度大于等于21的单词数:%d\n", len21plus);
return 0;
}
```
程序首先使用 `fgets` 函数从标准输入中读入一行字符串,并将其保存到 `sentence` 数组中。然后使用 `strtok` 函数以空格作为分隔符,将字符串 `sentence` 分割成若干个单词,并对每个单词的长度进行判断,最后统计不同长度的单词数目并输出。