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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。
  2. #warning 根据题目的文字,没有很明白题目要我做什么。。。我做的是按从高到低的顺序输出ABCD的次数
  3.         
  4.         char str[1024];
  5.         gets(str);
  6.         
  7.         int i = 0;
  8.         int countA = 0;
  9.         int countB = 0;
  10.         int countC = 0;
  11.         int countD = 0;
  12.         //计算ABCD出现的个数
  13.         while (str[i] != '\0') {
  14.             
  15.             if(str[i] == 'A')
  16.             {
  17.                 countA++;
  18.             }
  19.             else if(str[i] == 'B')
  20.             {
  21.                 countB++;
  22.             }
  23.             else if(str[i] == 'C')
  24.             {
  25.                 countC++;
  26.             }
  27.             else if(str[i] == 'D')
  28.             {
  29.                 countD++;
  30.             }
  31.             
  32.             i++;
  33.         }
  34.         
  35.         printf("%i, %i, %i, %i\n", countA, countB, countC, countD);
  36.         
  37.         //分别将字母和次数放到数组中,他们的关系是对应的。并且再排序的时候他们的位置都是要变得。
  38.         int count[4] = {countA, countB, countC, countD};
  39.         char cc[4] = {'A', 'B', 'C', 'D'};
  40.         for(int i = 0; i<3; i++)
  41.         {
  42.             if(count[i] < count[i+1])
  43.             {
  44.                 int temp = count[i];
  45.                 count[i] = count[i + 1];
  46.                 count[i + 1] = temp;
  47.                
  48.                 char tempC = cc[i];
  49.                 cc[i] = cc[i + 1];
  50.                 cc[i + 1] = tempC;
  51.             }
  52.         }
  53.         
  54.         for(int i = 0; i<4; i++)
  55.         {
  56.             printf("%c : %i\n", cc[i], count[i]);
  57.       
复制代码

3 个回复

倒序浏览
  1. #include <stdio.h>
  2. int main() {
  3.    
  4.     char c;
  5.     char total[4] = {0};
  6.     puts("输入字符串:");
  7.    
  8.     while ((c = getchar()) != '\n') {
  9.         for (char i = 'A'; i <= 'D'; ++i) {
  10.             if (c == i) {
  11.                 ++total[i - 'A'];
  12.                 break;
  13.             }
  14.         }
  15.     }
  16.    
  17.     for (int i = 0; i < 4; ++i) {
  18.         int max = 0;
  19.         for (int j = 1; j < 4; ++j)
  20.             if (total[j] > total[max])
  21.                 max = j;
  22.         
  23.         printf("%c:%d次\n", 'A' + max, total[max]);
  24.         total[max] = -1;
  25.     }
  26.     return 0;
  27. }
复制代码
回复 使用道具 举报
这个现在不好,不好意思帮不到你
回复 使用道具 举报
顶一下,虽然已经考过了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马