请用C语言写程序统计一篇文章中某个单词出现过多少次。 要求:软件至少应具有“开始统计”、“输出次数”、“退出”3项菜单。
时间: 2023-09-11 15:07:43 浏览: 102
统计一篇文档中每个单词出现的次数,频率
4星 · 用户满意度95%
以下是一个简单的C语言程序,可以实现你的要求:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 文章内容最大长度
#define MAX_WORDS 100 // 最多统计的单词数
// 统计单词出现次数的函数
int count_word(char *article, char *word) {
int count = 0;
char *ptr = article;
while ((ptr = strstr(ptr, word)) != NULL) {
count++;
ptr += strlen(word);
}
return count;
}
int main() {
char article[MAX_LEN];
char words[MAX_WORDS][MAX_LEN];
int word_count[MAX_WORDS] = { 0 };
int num_words = 0;
int choice = 0;
// 读取文章内容
printf("请输入文章内容:\n");
fgets(article, MAX_LEN, stdin);
// 提取单词
char *ptr = strtok(article, " ,.?!:;\n");
while (ptr != NULL) {
// 将单词存储到数组中
strcpy(words[num_words], ptr);
num_words++;
ptr = strtok(NULL, " ,.?!:;\n");
}
// 菜单循环
while (choice != 3) {
printf("\n请选择:\n");
printf("1. 开始统计\n");
printf("2. 输出次数\n");
printf("3. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
// 输入要统计的单词
printf("请输入要统计的单词:\n");
scanf("%s", words[num_words]);
num_words++;
break;
case 2:
// 统计单词出现次数
printf("单词\t出现次数\n");
for (int i = 0; i < num_words; i++) {
word_count[i] = count_word(article, words[i]);
printf("%s\t%d\n", words[i], word_count[i]);
}
break;
case 3:
// 退出程序
printf("程序已退出。\n");
break;
default:
// 输入错误,提示重新输入
printf("输入错误,请重新输入。\n");
break;
}
}
return 0;
}
```
这个程序首先读取文章内容,并使用 `strtok` 函数提取出所有的单词,并将它们存储到一个字符串数组中。然后,它进入一个菜单循环,让用户选择要进行的操作。用户可以输入要统计的单词,然后程序会统计该单词在文章中出现的次数,并将结果输出。用户还可以选择退出程序。
阅读全文