黑马程序员技术交流社区

标题: 输入字符串,统计'A'、'B'、'C'、'D'出现次数,由高到低输出字... [打印本页]

作者: 程清林    时间: 2016-5-26 14:35
标题: 输入字符串,统计'A'、'B'、'C'、'D'出现次数,由高到低输出字...
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>


  4. int main(int argc, const char * argv[]) {
  5.    
  6.     char ziMu[4]={'A','B','C','D'};
  7.     int ziMuCount[4]={0};//保存ziMu数组对应的个数
  8.    
  9.     //用户输入
  10.     printf("请输入一串字符:\n");
  11.     char arr[80]={'\0'};
  12.     gets(arr);
  13.    
  14.     //依次遍历‘A’,‘’B‘,’C‘,’D‘在字符串数组arr里的个数
  15.     for(int i='A',k=0;i<='D';i++,k++)
  16.     {
  17.         for(int j=0;j<strlen(arr);j++)
  18.         {
  19.             if (i==arr[j])
  20.             {
  21.                 ziMuCount[k]++;
  22.             }
  23.         }
  24.     }
  25.     //选择排序将ziMuCount数组从大到小排列,相对于的ziMu数组也更换顺序
  26.     for(int i=0;i<3;i++) //1 3 5 2
  27.     {
  28.         for(int j=i+1;j<4;j++)
  29.         {
  30.             if(ziMuCount[i]<ziMuCount[j])
  31.             {
  32.                 //更换ziMuCount数组元素的大小
  33.                 int tempCount;
  34.                 tempCount=ziMuCount[i];
  35.                 ziMuCount[i]=ziMuCount[j];
  36.                 ziMuCount[j]=tempCount;
  37.                 //更换ziMuCount数组元素相对应ziMu数组元素
  38.                 char temp;
  39.                 temp=ziMu[i];
  40.                 ziMu[i]=ziMu[j];
  41.                 ziMu[j]=temp;
  42.                
  43.             }
  44.         }
  45. }
  46.     //遍历输出
  47.     for (int i=0; i<4; i++)
  48.     {
  49.         printf("字母%C的个数是:%d\n",ziMu[i],ziMuCount[i]);
  50.     }
  51.     return 0;
  52. }
复制代码

输入字符串,统计'A'、'B'、'C'、'D'出现次数,由高到低输出字母和次数.期待还有更好的解决方案。


作者: 贪睡的猫    时间: 2016-5-26 14:51
先抢沙发,不多说话




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2