请编写程序,找出一段给定文字中出现最频繁的那个英文字母。
输入格式:
输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。
输出格式:
在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。
输入样例:
This is a simple TEST. There ARE numbers and other symbols 1&2&3...........
输出样例:
e 7
/*
这里一个字符串含有空格字符,所以不能直接用string读入,考虑到是字符
统计,只需要读入每个字符归类即可,所以逐个字符读入,然后归类计数,找
出最大值位置的下标输出即可;
*/
#include<iostream>
using namespace std;
int main(){
//遍历统计;
int data[26]; //用一个数组存放各类字母的个数,只需要小写即可;
for(int i=0;i<26;i++){
data[i]=0; //下标对应字母的位次;
}
//逐个读入;
char c=getchar();
while(c!='\n'){
if(c=='a'||c=='A'){
data[0]++;
}
else if(c=='b'||c=='B'){
data[1]++;
}
else if(c=='c'||c=='C'){
data[2]++;
}
else if(c=='d'||c=='D'){
data[3]++;
}
else if(c=='e'||c=='E'){
data[4]++;
}
else if(c=='f'||c=='F'){
data[5]++;
}
else if(c=='g'||c=='G'){
data[6]++;
}
else if(c=='h'||c=='H'){
data[7]++;
}
else if(c=='i'||c=='I'){
data[8]++;
}
else if(c=='j'||c=='J'){
data[9]++;
}
else if(c=='k'||c=='K'){
data[10]++;
}
else if(c=='l'||c=='L'){
data[11]++;
}
else if(c=='m'||c=='M'){
data[12]++;
}
else if(c=='n'||c=='N'){
data[13]++;
}
else if(c=='o'||c=='O'){
data[14]++;
}
else if(c=='p'||c=='P'){
data[15]++;
}
else if(c=='q'||c=='Q'){
data[16]++;
}
else if(c=='r'||c=='R'){
data[17]++;
}
else if(c=='s'||c=='S'){
data[18]++;
}
else if(c=='t'||c=='T'){
data[19]++;
}
else if(c=='u'||c=='U'){
data[20]++;
}
else if(c=='v'||c=='V'){
data[21]++;
}
else if(c=='w'||c=='W'){
data[22]++;
}
else if(c=='x'||c=='X'){
data[23]++;
}
else if(c=='y'||c=='Y'){
data[24]++;
}
else if(c=='z'||c=='Z'){
data[25]++;
}
c=getchar();
}
//找最大值;
int max=data[0];
for(int i=0;i<26;i++){
if(max<data[i]){
max=data[i];
}
}
//输出;
for(int i=0;i<26;i++){
if(data[i]==max){
printf("%c ",97+i); //输出对应字符;
printf("%d\n",max);
break;
}
}
return 0;
}