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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

1.定义数组并获得字符串
2.遍历数组,同时计算ABCD出现次数
3.冒泡排序,同时排序次数和对应的字母
4.遍历输出排列后的字母

*/

#include <stdio.h>
#define L 1000


int main(int argc, const char * argv[])
{
    char inputChar[L];
   
    printf("请从键盘输入字符串,回车结束:(友情提醒:输入\\0会影响统计结果!)\n");
    gets(inputChar);//获得输入字符串
   
    int a= 0,b= 0,c= 0,d= 0;//计数器
   
    for (int i= 0; i< L; i++) {//遍历数组
        
        switch (inputChar[i]) {//计数ABCDC出现次数
            case 'A':
                a++;
                break;
            case 'B':
                b++;
                break;
            case 'C':
                c++;
                break;
            case 'D':
                d++;
                break;
            default:
                break;
        }
    }
   
    //冒泡排序 同时排序次数和对应的字母
    int  arr[4]= {a,b,c,d};
    char trr[4] = {'A','B','C','D'};
    int len = 4;
    for (int i =0; i< len-1; i++) {
        for (int j= 0; j< len-1-i; j++) {
            if (arr[j]< arr[j+1]) {
               
                int tmp1 = 0;
                tmp1 = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp1;
               
                char tmp2 = '0';
                tmp2 = trr[j];
                trr[j] = trr[j+1];
                trr[j+1] = tmp2;
            }
            
        }
    }
   
    //遍历输出排列后的字母
   
    for (int i= 0; i< len; i++) {
        printf("字母%c出现现%d次\n",trr[i],arr[i]);
    }
   
    printf("The end\n");
    return 0;
}

7 个回复

倒序浏览
学习一下
回复 使用道具 举报
加油加油
回复 使用道具 举报
今天刚学到冒泡排序,自己自习了字符串,很受用,结合了很多的知识,虽然说现在有很多不懂,你给的代码很受用,好好研究下,顶起,加油
回复 使用道具 举报
Tactful丶boy 发表于 2015-11-18 22:20
今天刚学到冒泡排序,自己自习了字符串,很受用,结合了很多的知识,虽然说现在有很多不懂,你给的代码很受 ...

可以一起探讨研究哦
回复 使用道具 举报

谢谢,一起加油,一起到成为名副其实的黑马程序员
回复 使用道具 举报
学习了,原来也没有看过用字符排序的
回复 使用道具 举报
linexs 中级黑马 2015-11-19 12:28:55
8#
大雕会飞 发表于 2015-11-18 22:49
学习了,原来也没有看过用字符排序的

比字符的话,也可以转成ascii码来比,或者strcmp () 
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马