编程:编写一程序(应该有多个函数),允许从键盘输入任意多个英语单词(单词可以重复),中间用空格分开,输入0表示输入结束。该程序可以统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出,后面跟上该单词被输入的次数。(提示,尝试用结构体组织数据,把单词和该单出现的次数用一个结构体来描述。
时间: 2023-05-29 14:07:36 浏览: 89
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 1000 // 最多输入的单词数
#define MAX_WORD_LEN 100 // 最长单词长度
// 结构体,用于存储单词及其出现次数
struct word_count {
char word[MAX_WORD_LEN]; // 单词
int count; // 出现次数
};
// 比较函数,用于排序
int cmp(const void *a, const void *b) {
struct word_count *a1 = (struct word_count*) a;
struct word_count *b1 = (struct word_count*) b;
return strcmp(a1->word, b1->word);
}
int main() {
struct word_count words[MAX_WORDS]; // 存储单词及其出现次数的数组
int n = 0; // 实际输入的单词数
char word[MAX_WORD_LEN]; // 用于暂存输入的单词
// 从键盘输入单词,直到输入0为止
while (1) {
scanf("%s", word);
if (strcmp(word, "0") == 0) {
break;
}
// 检查单词是否已经存在于数组中,若存在则增加计数器
int found = 0;
for (int i = 0; i < n; i++) {
if (strcmp(words[i].word, word) == 0) {
words[i].count++;
found = 1;
break;
}
}
// 若单词不存在于数组中,则添加新单词
if (!found) {
strcpy(words[n].word, word);
words[n].count = 1;
n++;
}
}
// 对单词按字典序排序
qsort(words, n, sizeof(struct word_count), cmp);
// 输出排序后的单词及其出现次数
for (int i = 0; i < n; i++) {
printf("%s %d\n", words[i].word, words[i].count);
}
return 0;
}
阅读全文