题目描述
某一天,26个小写的英文字母争论了起来,它们都想当老大,闹得不可开交。这时逗比的小甲想到了一个好办法使它们平息了下来,规则是这样的:读入一行仅由小写英文字母组成的字符串,统计这26个小写英文字母在这串字符中出现的次数,谁出现的此数多谁就是老大。另外,没有出现在这串字符中的小写英文字母就只能甘拜下风了。虽然这种办法对有些字母有些不公平,但是大家还是硬着头皮接受了。那么好了,现在问题来了,聪明的你就编道程序帮它们解决吧。
输入
一行仅由小写英文字母组成的字符串,不包含其他的各类字符。
输出
输出出现次数最多的字母和次数,如果出现次数相同则输出ASCII码大的
样例输入
goodgoodstudydaydayup
样例输出
d:5
代码如下:
#include <iostream> #include <cstdio> using namespace std; int main() { char str[100]; int num[100],i,j,k=0,d; d=0; gets(str); for (i=0; str[i]!='\0'; i++) { for (j=0; str[j]!='\0'; j++) { if (str[j]==str[i]) k++; } num[i]=k; k=0; } for (i=0;str[i]!='\0';i++) { if (num[0]<num[i]) { num[0]=num[i]; d=i; } } cout<<str[d]<<":"<<num[d]; return 0; }
运行结果:
开始没读懂题目意思,脑筋也没有转过弯来,傻乎乎的将26个字母用switch语句列出来然后num[26]统计字符个数,用另外一个变量输入字符,最后输出的时候,出题人也不厚道,第四个字母刚好是d,对应的num[3]刚好是第四位且最大,然后就...wrong answer了。。。再度冥思苦想,最后还是靠学长的提示下做了出来。
时间: 2024-11-05 07:09:51