用C++编写一程序,允许从键盘输入任意多个英语单词(单词可以重复),中间用空格分开,输入0表示输入结束。该程序可以统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出,后面跟上该单词被输入的次数
时间: 2023-05-21 22:05:51 浏览: 249
一个C++语言编写的程序
以下是题目所需的完整代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORD_COUNT 10000 // 最大单词数量
#define MAX_WORD_LENGTH 50 // 单词最大长度
/**
* 单词结构体
*/
typedef struct {
char word[MAX_WORD_LENGTH]; // 单词
int count; // 应次数
} Word;
/**
* 单词比较函数,按字典序排序
*/
int wordCompare(const void * a, const void * b) {
Word* wordA = (Word*)a;
Word* wordB = (Word*)b;
return strcmp(wordA->word, wordB->word);
}
int main() {
Word words[MAX_WORD_COUNT]; // 单词数组
int wordCount = 0; // 实际单词数量
char wordInput[MAX_WORD_LENGTH]; // 输入单词缓存
// 读入单词
while (wordCount < MAX_WORD_COUNT) {
scanf("%s", wordInput);
// 如果输入0,结束输入
if (strcmp(wordInput, "0") == 0) {
break;
}
// 搜索单词是否已存在
int foundWordIndex = -1;
for (int i = 0; i < wordCount; i++) {
if (strcmp(words[i].word, wordInput) == 0) {
foundWordIndex = i;
break;
}
}
// 如果单词不存在,新建一个单词
if (foundWordIndex == -1) {
Word newWord;
strcpy(newWord.word, wordInput);
newWord.count = 1;
words[wordCount++] = newWord;
}
// 如果单词存在,单词次数加1
else {
words[foundWordIndex].count++;
}
}
// 按字典序排序
qsort(words, wordCount, sizeof(Word), wordCompare);
// 输出单词及其次数
for (int i = 0; i < wordCount; i++) {
printf("%s %d\n", words[i].word, words[i].count);
}
return 0;
}
阅读全文