【发布时间】:2025-12-27 02:40:12
【问题描述】:
输入:char(需要找到这个char在数组中出现次数最多的单词)
输出:打印出现次数最多的给定字符或单词(如果出现次数相同)。
需要找到给定字符出现次数最多的一个或多个单词。
我编写了一个程序来查找并打印出现次数最多的单词。 但我不明白如何使用给定的字符查找单词。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char array[]="this is text. Useuuu it for test. Text for test.";
char* buf = strtok(array," .,!?;:");
char *word;
int max = 0;
char c;
while(buf) {
int n = strlen(buf);
for(int i = 0; i < n; i++) {
int counter=0;
for(int j = 0; j < n ; j++) {
if(buf[i]==buf[j] && i != j)
counter++;
if(counter>max) {
max=counter;
word=buf;
}
}
}
buf=strtok(0," .,!?;:");
}
cout << "Result: " << word << endl;
return 0;
}
在这个程序中,结果是单词“Useuuu”
对不起我的英语。
【问题讨论】:
-
@panilya - 继续 Input: char 怎么样?
-
@Armali 已更正
-
我的意思是继续将 char 的 input 添加到您的程序中。
-
这对我来说似乎是一个太多的循环,我不确定最里面的
for循环如何帮助你。首先,您需要一个 char 进行比较(大概应该是c,但您没有捕获用户输入)。一旦你这样做了,你就有了buf中的当前单词,逐个字符地循环遍历该字符,与c进行比较。在一场比赛中增加一个计数器,与以前的最大值相比。如果该计数与之前的最大值匹配,则将.push_back(buf)指向一个向量。如果有新的最大计数,请清除缓冲区和.push_back(buf)。 -
@yano 谢谢,它工作了
标签: c++ arrays string algorithm char