首页 > 技术文章 > 1042. 字符统计(20)

geyang 2017-01-25 13:48 原文

请编写程序,找出一段给定文字中出现最频繁的那个英文字母。

输入格式:

输入在一行中给出一个长度不超过1000的字符串。字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束(回车不算在内)。

输出格式:

在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。

输入样例:

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........

输出样例:

e 7

 

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main(){
 4     char s[1001]="";
 5     char n;
 6     int num[129]={};
 7     int i=0;
 8     int j=0;
 9     int max=0;
10     char chmax=0;
11     for(i=0;i<128;i++){
12         num[i]=0;
13     }
14     i=0;
15     while((n=getchar())!='\n'){
16         if(n>='a'&&n<='z'){
17             s[i]=n;
18             i++;
19         }else if(n>='A'&&n<='Z'){
20             s[i]=n+32;
21             i++;
22         }
23     }
24     //printf("%s\n",s);
25     for(i=0;i<128;i++){
26         for(j=0;j<strlen(s);j++){
27             if(i==s[j]){
28                 num[i]++;
29             }
30         }
31     }
32     
33     for(i=0;i<128;i++){
34         if(max<num[i]){
35             max=num[i];
36             chmax=i;
37         }
38     }
39     
40     printf("%c %d",chmax,max);
41     return 0;
42 }

 

推荐阅读