统计输入字符各个字母出现频率的解题思路

2020-01-06 13:38:31王冬梅
  • 完整代码:

     

     
    1. #include <stdio.h>  #include <ctype.h> 
    2.   main() 
    3. {  int x; //数组下标变量,详情看代码 
    4. int max; //出现频率最高的字母  int char_count[26]; //26个字母出现字数的统计 
    5. char c;   
    6. /*将数组初始化,因为我们还没有输入嘛,所以a~z都为0啦*/  for( x= 0; x < 26; x++) 
    7. {  char_count[x] = 0; 
    8. }   
    9. while((c = getchar()) != EOF)  { 
    10. if(isalpha(c)) /*详情见文末*/  { 
    11. c = tolower(c); //大写转换为小写  ++char_count[c-'a']; 
    12. }  } 
    13.   max = 0; //初始化 
    14.   /*找出出现频率最高的字母*/ 
    15. for(x = 0; x < 26; x++)  { 
    16. if(char_count[x] > max)  { 
    17. max = char_count[x];  printf("max is %d", max); 
    18. }  } 
    19.   /*打印直方图*/ 
    20. for(; max > 0; max--)  { 
    21. for(x = 0; x < 26; x++)  { 
    22. if(char_count[x] >= max)  { 
    23. putchar('x');  } 
    24. else  putchar('');