基于c语言解题思路,首先需要使用gets()函数来获取输入的字符串,因为题目要求最大为1000个字符所以定义一个char类型的函数大小为1001.也就是char b[1001];
要获取字符串中最大出现最多的那个字符:先要定义一个指针p指向字符串b; 也就是*p=b;
定义指针的目的是为了指向字符串b,那么就可以再定义一个数组int a[200]={0};用于存放每个字符的个数;因为每个字母所对应的阿斯科码一般是不超过200的所以定义一个大小为200的int 型数组。数组内存放的是每个阿斯科码对应出现的个数,也就是从零到两百的阿斯科码中,这些阿斯科码出现的次数;有了这个函数就可以实现对字符串中数据的统计;
此时指针p已经指向了我们输入的字母串b;想要判断字符串中的字母是位于A-Z之间还是a-z之间,因为题目要求的是不区分大小写的进行统计,输出结果也是小写的。所以要加一个判断的语句。也就是if('A'<*p && *p<'Z');如果当前的字符是大写的,就需要转换成小写的然后存储到数组a中也就是执行下列两个步骤:1、*p=*p-'A'+'a'; 2、a[*p]++; 第一步将当前字符的阿斯科码减去大写A的阿斯科码再加上小写a的阿斯科码 就可以得到当前字符在小写的阿斯科码。然后放入数组a当中自加一;如果当前的是小写的字符就不需要执行步骤1了,直接执行步骤2;最后指针向后移一位,即p++;
最后需要在数组a当中找出数值最大的那一个;这时候需要定义两个变量来存放输出的结果,这里定义为max,k;
查阿斯科码表可以得到小写a 到小写z的数值是在97和122之间;
定义一个循环来接这个数组里面的最大值;
for(int i=97;i<122;i++){
if(a[i]>max)
max=a[i]; //记录下最大的值
k=i; //同时记录下当前最大值所对应的阿斯科码
}
最后只要输出k 和max就可以得到所需要的结果。
源码可以参考这篇文章:https://blog.csdn.net/qq_30331643/article/details/52444983