A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. *6.从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
  3. */

  4. #include<stdio.h>

  5. int main(int argc, const char * argv[])
  6. {
  7.     //1.新建四个整型变量用于分别存贮字符 A B C D的个数 因为多次输入字符串,计数累加 所以新建变量在主循环外面
  8.     int countA = 0;
  9.     int countB = 0;
  10.     int countC = 0;
  11.     int countD = 0;
  12.    
  13.     //2.主循环 持续提示用户输入字符串并打印
  14.     while(TRUE)
  15.     {
  16.         //2.1系统提示用户输入字符串
  17.         printf("请输入字符串并按回车确定\n");
  18.         
  19.         //2.1新建一个100长度的字符数组string用于存储用户输入字符串
  20.         char string[100];
  21.         scanf("%s",string);
  22.         
  23.         //2.2新建一个变量存贮字符串的长度
  24.         unsigned long length = strlen(string);
  25.       
  26.         //2.3循环计数字符A B C D的个数
  27.         for(int i = 0;i < length;i++)
  28.         {
  29.             switch (string[i]) {
  30.                 case 'A':
  31.                     countA++;
  32.                     break;
  33.                 case 'B':
  34.                     countB++;
  35.                     break;
  36.                 case 'C':
  37.                     countC++;
  38.                     break;
  39.                 case 'D':
  40.                     countD++;
  41.                     break;
  42.                     
  43.                 default:
  44.                     break;
  45.             }
  46.         }
  47.         
  48.         //2.4分别建立一个字符数组和一个整型数组用于存放字符的名字和计数
  49.         char label[4]={'A','B','C','D'};
  50.         int count[4]={countA,countB,countC,countD};
  51.         
  52.         //2.5元素交换需要用到的中间变量
  53.         char labelSwap;
  54.         int countSwap;
  55.         
  56.         //2.6 count数组冒泡排序 如果后面元素大于前面的元素 则分别交换label count数组的元素
  57.         for(int i = 0;i < 4;i++)
  58.         {
  59.             for(int j = i+1;j < 4;j++)
  60.             {
  61.                 if(count[i] < count[j])
  62.                 {
  63.                     //2.6.1交换count数组元素
  64.                     countSwap = count[i];
  65.                     count[i] = count[j];
  66.                     count[j] = countSwap;
  67.                     
  68.                     //2.6.2交换label数组元素
  69.                     labelSwap = label[i];
  70.                     label[i] = label[j];
  71.                     label[j] = labelSwap;
  72.                 }
  73.             }
  74.         }
  75.         
  76.         //2.7输出结果 字符和计数
  77.         printf("%c %d %c %d %c %d %c %d",label[0],count[0],label[1],count[1],label[2],count[2],label[3],count[3]);
  78.     }

  79.     return 0;
  80. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马