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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

8 个回复

倒序浏览
你是要代码 还是要思路
回复 使用道具 举报
先来段代码,非常感谢,
回复 使用道具 举报
为梦想挺身而出 发表于 2014-7-12 19:47
你是要代码 还是要思路

先来代码,我看看,
回复 使用道具 举报
#import <stdio.h>

int main()
{
    // 定义一个数组array用来存放输入的字符串
    char array[100];
   
    // 提示输入一个字符串
    printf("请输入一串字符串:\n");
   
    // 接收输入的字符串,并赋值给数组array
    scanf("%s",array);
   
    // 定义两个变量用于for循环条件变量
    int i,j;
   
    // 定义四个变量用来存放ABCD出现的次数
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
   
    // 定义变量length用来存放输入字符串的长度
    unsigned long length = strlen(array);
   
    // 定义for循环,当i小于字符串长度时,执行循环体,i加1
    for (i = 0; i<length; i++) {
        
        // 统计A出现的次数
        if (array[i] == 'A') {
            a++;
        }
        
        // 统计B出现的次数
        else if (array[i] == 'B'){
            b++;
        }
        
        // 统计C出现的次数
        else if (array[i] == 'C'){
            c++;
        }
        
        // 统计D出现的次数
        else if (array[i] == 'D'){
            d++;
        }
    }
   
    // 定义一个数组x用来存放ABCD出现的次数
    int x[4] = {a,b,c,d};
   
    // 定义temp用于冒泡排序标记排序趟数
    int temp;
   
    // 冒泡排序  将a,b,c,d降序排序,i表示排序的趟数,j表示每趟排序的比较次数
    for (i = 0; i<3; i++)
    {
        for(j = 0;j<3-i;j++)
        {
            if (x[j] < x[j+1])
            {
                // 当前一个元素小于后一个元素时,交换它们的位置
                temp = x[j];
                x[j] = x[j+1];
                x[j+1] = temp;
            }

        }
    }
   
    // 定义一个数组y用来存放ABCD标志
    char y[4];
   
    // 将数组x与数组y的出现次数和标志一一对应
    for (i = 0; i<4; i++)
    {
        // 如果出现a次,则y[i]='A'
        if(x[i] == a && y[0] != 'A' && y[1] != 'A' && y[2] != 'A' && y[3] != 'A')
        {
            y[i] = 'A';
        }
        // 如果出现b次,则y[i]='B'
        else if(x[i] == b && y[0] != 'B' && y[1] != 'B' && y[2] != 'B' && y[3] != 'B')
        {
            y[i] = 'B';
        }
        // 如果出现c次,则y[i]='C'
        else if(x[i] == c && y[0] != 'C' && y[1] != 'C' && y[2] != 'C' && y[3] != 'C')
        {
            y[i] = 'C';
        }
        // 如果出现d次,则y[i]='D'
        else
        {
            y[i] = 'D';
        }
    }
   
    // 降序打印输出每个字母出现的次数
    for (i = 0; i<4; i++)
    printf("%c出现%d次\n",y[i],x[i]);
   
    return 0;
}

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
{:3_64:}LS厉害 学习了~
回复 使用道具 举报
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main()
  4. {
  5.    
  6.     char str1[100];
  7.    
  8.     printf("请输入字符串,字符串之间用逗号隔开,以回车结束\n");
  9.    
  10.     scanf("%s", str1);
  11.    
  12.     // 定义变量用来计算出现的次数
  13.     int A = 0, B = 0, C = 0, D = 0;
  14.    
  15.     // 计算每个字母出现的次数
  16.     for (int i = 0; i<strlen(str1); i++)
  17.     {
  18.         
  19.         if ( str1[i] == 'A')
  20.         {
  21.             A++;
  22.         }
  23.         else if (str1[i] == 'B')
  24.         {
  25.             B++;
  26.         }
  27.         else if (str1[i] == 'C')
  28.         {
  29.             C++;
  30.         }
  31.         else if (str1[i] == 'D')
  32.         {
  33.             D++;
  34.         }
  35.     }
  36.    
  37.     // 定义一个整型数组
  38.     int str2[] = {A, B, C, D};
  39.    
  40.     // 定义一个变量用来对值的互换
  41.     int temp;
  42.    
  43.     int a = 1, b = 1, c = 1, d=1; // 用来防止字母数相同输出错误
  44.    
  45.     for (int j = 3; j>=0; j--)
  46.     {
  47.         for (int g = 0; g<3; g++)
  48.         {
  49.             if (str2[g] > str2[g+1])
  50.             {
  51.                 // 如果第一个数大于第二个数就与第二个数互换
  52.                 temp = str2[g];
  53.                 str2[g] = str2[g+1];
  54.                 str2[g+1] = temp;
  55.                
  56.             }
  57.         }
  58.         
  59.         if (str2[j] == A && a == 1)
  60.         {
  61.             a++;
  62.             printf("出现字母A的次数为%d\n", A);
  63.         }
  64.         else if (str2[j] == B && b == 1)
  65.         {
  66.             b++;
  67.             printf("出现字母B的次数为%d\n", B);
  68.         }
  69.         else if (str2[j] == C && c == 1)
  70.         {
  71.             c++;
  72.             printf("出现字母C的次数为%d\n", C);
  73.         }
  74.         else if (str2[j] == D && d == 1)
  75.         {
  76.             d++;
  77.             printf("出现字母D的次数为%d\n", D);
  78.         }
  79.     }
  80.    
  81.     return 0;
  82. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报

不好意思,可以是我基础不扎实吧,冒泡有点略蒙,我再好好看看,但非常的感谢哈
回复 使用道具 举报

#include <string.h>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马