编写一程序(应该有多个函数),允许从键盘输入任意多个英语单词(单词可以重复),中间用空格分开,输入0表示输入结束。该程序可以统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出,后面跟上该单词被输入的次数。(提示,尝试用结构体组织数据,把单词和该单出现的次数用一个结构体来描述。c++
时间: 2023-05-21 19:06:36 浏览: 97
非常抱歉,我可以回答这个编程类的问题。下面是一个能够实现该功能的C语言程序,使用结构体组织数据:
```c
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 10000
typedef struct {
char word[50];
int count;
} Word;
int cmp(const void* a, const void* b) {
Word *p1 = (Word*) a;
Word *p2 = (Word*) b;
return strcmp(p1->word, p2->word);
}
int main() {
Word words[MAX_WORDS];
int n = 0;
char word[50];
printf("请输入任意多个英语单词,以0结束:\n");
while (1) {
scanf("%s", word);
if (strcmp(word, "0") == 0) {
break;
}
int found = 0;
for (int i = 0; i < n; i++) {
if (strcmp(word, words[i].word) == 0) {
words[i].count++;
found = 1;
break;
}
}
if (!found) {
strcpy(words[n].word, word);
words[n].count = 1;
n++;
}
}
qsort(words, n, sizeof(Word), cmp);
printf("按字典顺序输出单词:\n");
for (int i = 0; i < n; i++) {
printf("%s %d\n", words[i].word, words[i].count);
}
return 0;
}
```
该程序使用结构体 Word 来保存输入的单词和对应的出现次数,每次输入时先在已有的单词列表中查找,如果找到则将出现次数加一,否则新增一个单词。排序后按字典序输出即可。
阅读全文