编写程序 编写一程序(应该有多个函数),允许从键盘输入任意多个英语单词(单词可以重复), 中间用空格分开,输入 0 表示输入结束。该程序可以统计同一个英语单词被输入几次,最后 对英文单词按字典顺序输出,后面跟上该单词被输入的次数。(提示,尝试用结构体组织数据, 把单词和该单出现的次数用一个结构体来描述。) 比如输入: book am book is book am 0 输出:am 2 book 3 is 1
时间: 2024-04-17 18:26:33 浏览: 66
您可以尝试使用结构体来组织数据,每个结构体包含一个单词和该单词出现的次数。然后,您可以使用一个数组来存储这些结构体。下面是一个示例程序,可以满足您的要求:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体
struct WordInfo {
char word[50];
int count;
};
// 函数用于判断单词是否已存在于数组中
int isWordExist(struct WordInfo words[], int size, char word[]) {
for (int i = 0; i < size; i++) {
if (strcmp(words[i].word, word) == 0) {
return i; // 返回单词在数组中的索引
}
}
return -1; // 单词不存在于数组中
}
// 函数用于按字典顺序排序数组
void sortWords(struct WordInfo words[], int size) {
struct WordInfo temp;
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (strcmp(words[i].word, words[j].word) > 0) {
temp = words[i];
words[i] = words[j];
words[j] = temp;
}
}
}
}
int main() {
struct WordInfo words[100]; // 假设最多输入100个单词
int wordCount = 0;
printf("请输入英语单词(以空格分隔),输入0表示结束:\n");
char input[50];
scanf("%s", input);
while (strcmp(input, "0") != 0) {
int index = isWordExist(words, wordCount, input);
if (index != -1) {
// 单词已存在,增加计数
words[index].count++;
} else {
// 单词不存在,添加到数组
strcpy(words[wordCount].word, input);
words[wordCount].count = 1;
wordCount++;
}
scanf("%s", input);
}
// 按字典顺序排序数组
sortWords(words, wordCount);
printf("按字典顺序输出单词及出现次数:\n");
for (int i = 0; i < wordCount; i++) {
printf("%s %d\n", words[i].word, words[i].count);
}
return 0;
}
```
这个程序使用了结构体 `WordInfo` 来组织每个单词及其出现次数。首先,程序会读取用户的输入,将输入的单词与已有的单词进行比较。如果单词已存在,则增加计数;如果单词不存在,则将其添加到数组中。最后,程序会对数组中的单词按字典顺序进行排序,并输出每个单词及其出现次数。
请注意,这只是一个示例程序,可能需要根据实际情况进行适当修改和调整。希望对您有帮助!
阅读全文