用C++输入一篇英文文章,以$符号结束,统计其中出现频率最高的单词

2025-04-07 05:26:35
推荐回答(1个)
回答1:

c++还没有全学完,只能用有限的一点知识编了一个,功能有限,如区分大小写啦,单数和复数也要区分为不同单词啦等等,还有就是对文章输入字符多少的限制啦(最好不超过1000个单词,可能会溢出,但这可以在程序中更改)。好了总之,一个非常完整的程序不可能再这么短时间编写出来,lz就当参考下吧。
代码如下:
#include
#include
#include
#pragma warning (disable:4786)
using namespace std;
int main()
{
int i,j,m,n,q,a[200],c[1000];
m=n=0;
char *p;
vector s;
char save[20],str[200],len[10000];
string str1,str2,str3[200];
for(i=0;i<100;i++)
a[i]=0;
cout<<"请输入短文内容并以$结束:"< while(cin)
{
cin.getline(str,200);
str1=str;
if(str1=="$")
break;
s.push_back(str1);
}
for(i=0;i str2=str2+s[i]+" ";
str2=str2+"\0";
strcpy(len,str2.c_str ());
p=len;
cout<<"测试结果为:"< while(*p!='\0')
{
memset(save,0,20);
q=0;
i=0;
while(!(isalpha(*p))&&*p!='\0')
p++;

while(isalnum(*p))
{
save[i]=*p;
i++;
p++;
}
for(j=0;j if(!(strcmp(save,str3[j].c_str())))
{
a[j]++;
q=1;
break;
}
if(q==0&&*p!='\0')
{
str3[n]=save;
a[n]++;
n++;

}

}
int max=a[0];
for(i=0;i if(max max=a[i];
for(i=0;i {
if(max==a[i])
{
c[m]=i;
m++;
}
}
for(i=0;i cout< cout<<"在这篇短文中出现频率最高的为:"< for(i=0;i cout<<"★★★"< cout< return 0;

}
有问题再联系我。