编写一程序(应该有多个函数),允许从键盘输入任意多个英语单词(单词可以重复),中间用空格分开,输入0表示输入结束。该程序可以统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出,后面跟上该单词被输入的次数。(提示,尝试用结构体组织数据,把单词和该单出现的次数用一个结构体来描述。
时间: 2023-05-21 14:06:34 浏览: 86
以下是参考代码,其中使用了一个结构体WordCount用来记录单词及出现次数,再对其进行排序:
```
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 1000
#define MAX_WORD_LENGTH 20
typedef struct {
char word[MAX_WORD_LENGTH];
int count;
} WordCount;
void sortByWord(WordCount wc[], int len) {
int i, j;
WordCount tmp;
for(i=0; i<len-1; i++) {
for(j=i+1; j<len; j++) {
if(strcmp(wc[i].word, wc[j].word) > 0) {
tmp = wc[i];
wc[i] = wc[j];
wc[j] = tmp;
}
}
}
}
int main() {
WordCount words[MAX_WORDS];
int count = 0;
char input[MAX_WORD_LENGTH];
printf("请输入单词(以空格分隔), 输入0结束:\n");
while(1) {
scanf("%s", input);
if(strcmp(input, "0") == 0) {
break;
}
int i, found = 0;
for(i=0; i<count; i++) {
if(strcmp(input, words[i].word) == 0) {
words[i].count++;
found = 1;
break;
}
}
if(!found) {
if(count == MAX_WORDS) {
printf("超过最大单词数!");
return -1;
}
strcpy(words[count].word, input);
words[count].count = 1;
count++;
}
}
sortByWord(words, count);
printf("单词\t\t出现次数\n");
printf("----\t\t--------\n");
int i;
for(i=0; i<count; i++) {
printf("%-10s\t%d\n", words[i].word, words[i].count);
}
return 0;
}
```
阅读全文