
1. 编写函数fun ,其功能是求形参指向字符串中出现频率最高的字母(不区分大小写),并统计其出现的次数。
例如:形参指向的字符串为abcABsmaxless,程序的执行结果为:letter‘a’:3timesletter‘s’:3times怎么写...
例如:形参指向的字符串为abcABsmaxless,程序的执行结果为:
letter ‘a’ : 3 times
letter ‘s’ : 3 times
怎么写 展开
letter ‘a’ : 3 times
letter ‘s’ : 3 times
怎么写 展开
1个回答
展开全部
主要思路:因为题目要求频率最高的字母且不区分大小写,那么就对应的开一个数组,保存26个字母各自出现的字数就行了。
代码如下:
void fun(char str[]) //必须保证字符数组只含字母,如果不行就得先处理一遍数组
{
int len=strlen(str),i,array[26],max=0,j;
for(i=0;i<26;i++) array[i]=0;
for(i=0;i<len;i++)
{
j=(int)( tolower ( str[i] ) - 'a' ); //使用头文件cstdlib,如果是用C的话,是用stdlib.h
array[ j ]++;
if( array[j] > max ) max=array[j]; //记录最大出现的次数
}
for(i=0;i<26;i++) //输出结果
{
if( array[i] == max )
{
cout<<"letter '"<< (char)('a'+i) <<"': "<<max<<" times"<<endl;
}
}
}
不懂的话再问
代码如下:
void fun(char str[]) //必须保证字符数组只含字母,如果不行就得先处理一遍数组
{
int len=strlen(str),i,array[26],max=0,j;
for(i=0;i<26;i++) array[i]=0;
for(i=0;i<len;i++)
{
j=(int)( tolower ( str[i] ) - 'a' ); //使用头文件cstdlib,如果是用C的话,是用stdlib.h
array[ j ]++;
if( array[j] > max ) max=array[j]; //记录最大出现的次数
}
for(i=0;i<26;i++) //输出结果
{
if( array[i] == max )
{
cout<<"letter '"<< (char)('a'+i) <<"': "<<max<<" times"<<endl;
}
}
}
不懂的话再问
追问
运行结果不对
追答
错哪了,发个图看看,我在这边运行正常且无误啊?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询