编写一程序(应该有多个函数),允许从键盘输入任意多个英语单词(单词可以重复),中间用空格分开,输入0表示输入结束。该程序可以统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出,后面跟上该单词被输入的次数。(提示,尝试用结构体组织数据,把单词和该单出现的次数用一个结构体来描述。
时间: 2023-06-01 20:01:49 浏览: 68
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 100 // 最多输入单词数
#define MAX_LEN 20 // 单词最大长度
// 结构体,用来保存单词及其出现次数
struct Word {
char word[MAX_LEN];
int count;
};
// 输入函数,返回输入单词的个数
int inputWords(struct Word words[]) {
int i = 0;
char input[MAX_LEN];
printf("Please enter words (separated by space, end with 0):\n");
scanf("%s", input);
while (strcmp(input, "0") != 0 && i < MAX_WORDS) {
// 查找单词是否已存在
int j;
for (j = 0; j < i; j++) {
if (strcmp(words[j].word, input) == 0) {
words[j].count++;
break;
}
}
// 如果单词不存在,添加新单词
if (j == i) {
strcpy(words[i].word, input);
words[i].count = 1;
i++;
}
scanf("%s", input);
}
return i;
}
// 冒泡排序函数,按字典顺序排序
void sortWords(struct Word words[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (strcmp(words[j].word, words[j + 1].word) > 0) {
struct Word temp = words[j];
words[j] = words[j + 1];
words[j + 1] = temp;
}
}
}
}
// 输出函数,按格式输出单词及其出现次数
void outputWords(struct Word words[], int n) {
int i;
printf("Words and their counts:\n");
for (i = 0; i < n; i++) {
printf("%s : %d\n", words[i].word, words[i].count);
}
}
int main() {
struct Word words[MAX_WORDS];
int n = inputWords(words);
sortWords(words, n);
outputWords(words, n);
return 0;
}
阅读全文