求C++大神帮我找下错误,题目要求是统计字符串中每个字母出现的次数,并找出最多的字母及次数,在线等
#include"iostream.h"#include"stdio.h"#include"string.h"voidfreq(chars[],intp[],char&c...
#include "iostream.h"
#include "stdio.h"
#include "string.h"
void freq(char s[],int p[],char &chmax,int &max)
{
int i;
strlwr(s);
for(i=0;i<=25;i++)
p[i]=0;//26个字母现在均为0个
i=0;
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z')
p[s[i]-'a']++;
i++;
}
max=p[0];
for(i=0;i<26;i++)
{
if(p[i]>=max)
{
max=p[i];
chmax=i+97;
}
}
void main()
{
char s[80],chmax;
int max,p[26],i;
cout<<"输入字符串"<<endl;
gets(s);
freq(s,p,chmax,max);
for(i=0;i<25;i++)
{
if(p[i]!=0)
cout<<char(i)<<"----"<<p[i]<<endl;
}
cout<<"频率出现最高的字母:"<<chmax<<"----"<<max<<endl;
}
C:\Users\Administrator\Documents\c++\65\1453349_6_5.cpp(27) : error C2601: 'main' : local function definitions are illegal
C:\Users\Administrator\Documents\c++\65\1453349_6_5.cpp(40) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
65.exe - 1 error(s), 0 warning(s)
ps:不区分大小写 展开
#include "stdio.h"
#include "string.h"
void freq(char s[],int p[],char &chmax,int &max)
{
int i;
strlwr(s);
for(i=0;i<=25;i++)
p[i]=0;//26个字母现在均为0个
i=0;
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z')
p[s[i]-'a']++;
i++;
}
max=p[0];
for(i=0;i<26;i++)
{
if(p[i]>=max)
{
max=p[i];
chmax=i+97;
}
}
void main()
{
char s[80],chmax;
int max,p[26],i;
cout<<"输入字符串"<<endl;
gets(s);
freq(s,p,chmax,max);
for(i=0;i<25;i++)
{
if(p[i]!=0)
cout<<char(i)<<"----"<<p[i]<<endl;
}
cout<<"频率出现最高的字母:"<<chmax<<"----"<<max<<endl;
}
C:\Users\Administrator\Documents\c++\65\1453349_6_5.cpp(27) : error C2601: 'main' : local function definitions are illegal
C:\Users\Administrator\Documents\c++\65\1453349_6_5.cpp(40) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
65.exe - 1 error(s), 0 warning(s)
ps:不区分大小写 展开
1个回答
展开全部
#include "iostream.h"
#include "stdio.h"
#include "string.h"
void freq(char s[],int p[],char *chmax,int *max) //改为*
{
int i;
strlwr(s);
for(i=0;i<=25;i++)
p[i]=0;//26个字母现在均为0个
i=0;
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z')
p[s[i]-'a']++;
i++;
}
*max=p[0]; // 加*
for(i=0;i<26;i++)
{
if(p[i]>=max)
{
*max=p[i]; //加*
*chmax=i+97; //加*
}
}
void main()
{
char s[80],chmax;
int max,p[26],i;
cout<<"输入字符串"<<endl;
gets(s);
freq(s,p,&chmax,&max); //加&
for(i=0;i<25;i++)
{
if(p[i]!=0)
cout<<char(i)<<"----"<<p[i]<<endl;
}
cout<<"频率出现最高的字母:"<<chmax<<"----"<<max<<endl;
}
#include "stdio.h"
#include "string.h"
void freq(char s[],int p[],char *chmax,int *max) //改为*
{
int i;
strlwr(s);
for(i=0;i<=25;i++)
p[i]=0;//26个字母现在均为0个
i=0;
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z')
p[s[i]-'a']++;
i++;
}
*max=p[0]; // 加*
for(i=0;i<26;i++)
{
if(p[i]>=max)
{
*max=p[i]; //加*
*chmax=i+97; //加*
}
}
void main()
{
char s[80],chmax;
int max,p[26],i;
cout<<"输入字符串"<<endl;
gets(s);
freq(s,p,&chmax,&max); //加&
for(i=0;i<25;i++)
{
if(p[i]!=0)
cout<<char(i)<<"----"<<p[i]<<endl;
}
cout<<"频率出现最高的字母:"<<chmax<<"----"<<max<<endl;
}
更多追问追答
追问
可是按照你的这个改法,只是把函数的传值参数改成指针参数了,我的参数设置是没问题的,而且你可以试试把你的这个敲一下,出来的错误还是那两条:-(
有没有更准确一点的改法?
追答
main()的前面少;号
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询