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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
本帖最后由 joykerl 于 2014-11-18 23:34 编辑

#include <stdio.h>
int sequence_size(int sequence_array[],int length,char *putc[]);
int main(void)
{
    //定义一个字符变量
    char ch,putc[4]= {'A','B','C','D'};
    int sumaa = 0,sumbb = 0,sumcc = 0,sumdd = 0;
    //输入一个字符串
    //判断是否存在A,B,C,D
    while ((ch = getchar()) != '\n')
    {
        if (ch == 'A')
            //如果存在指定字符,则放进一个变量里存储
            sumaa = sumaa + 1;
        else if (ch == 'B')
            //如果存在指定字符,则放进一个变量里存储
            sumbb = sumbb + 1;
        else if (ch == 'C')
            //如果存在指定字符,则放进一个变量里存储
            sumcc = sumcc + 1;
        else if (ch == 'D')
            //如果存在指定字符,则放进一个变量里存储
            sumdd = sumdd + 1;
    }
    //定义一个新的数组,并调用出A-D的输入次数,赋值到数组的元素中
    int sequence_array[4] = {sumaa,sumbb,sumcc,sumdd};
    //计算出数组的总长度
    int length = sizeof(sequence_array)/sizeof(int);
    //定义一个新的函数,使用冒泡算法对数组元素的大小值进行排序
    sequence_size(sequence_array,length,&putc);
    //遍历数组所有元素
    for (int count = 0;count < length;count++)
    {
        printf ("%c = %d\n",putc[count],sequence_array[count]);
    }
    return 0;
}
//使用冒泡算法对数组元素进行比较并按照从小到大进行排序
int sequence_size(int sequence_array[],int length,char *putc[])
{
    int i,j,k;
    //根据main函数里定义的数组:遍历遍历数组
    for (j = 1;j < length;j++)
    {
        //逐个循环遍历相邻的两个数
        for (i = 0;i < length - j;i++)
        {
            //比较相邻两个数值的大小并进行交换
            if (sequence_array < sequence_array[i + 1])
            {
                k = sequence_array;
                sequence_array = sequence_array[i + 1];
                sequence_array[i + 1] = k;
            }
            if (sequence_array < sequence_array[i + 1])
            {
                *putc = sequence_array;
                sequence_array = sequence_array[i + 1];
                sequence_array[i + 1] = *putc;
            }
        }
    }
    return 0;
}

---------------------------------------------------

该程序首先是要求用户输入A,B,C,D  四个字母进行统计各个字母输入的数量,然后再进行从小到大排序。 这两个功能以上代码都已经实现了,现在关键是:排序出来只有各字母的数量,没有对应哪个字母数量是谁的
例如运行该程序,输入:AAAABBBDDC
结果输出:
1
2
3
4
现在我需要输出结果对应的数量,是哪个字母的?  刚刚接触函数和数组,想了很久,不知道怎么样输出数字的同时,也可以输出字母。好像函数只能返回一个值的,尝试了用指针从函数里调用,也找不到思路
麻烦大家帮帮忙,谢谢了

最佳答案

查看完整内容

这道题我做过,你思路歪了,其实是这样的,我原文件删除了,给你讲下我的思路 在比对大小值不是往数组里存数字,而是存字符ABCD的顺序 然后你之前有对应ABCD的int,等字符数组排序完成后 用个switch跟上对应的int就可以了

10 个回复

倒序浏览
这道题我做过,你思路歪了,其实是这样的,我原文件删除了,给你讲下我的思路
在比对大小值不是往数组里存数字,而是存字符ABCD的顺序
然后你之前有对应ABCD的int,等字符数组排序完成后
用个switch跟上对应的int就可以了
回复 使用道具 举报
weizhang00 发表于 2014-11-19 16:11
这道题我做过,你思路歪了,其实是这样的,我原文件删除了,给你讲下我的思路
在比对大小值不是往数组里存 ...

或者你组个二维数组
回复 使用道具 举报
weizhang00 发表于 2014-11-19 16:24
或者你组个二维数组

感谢你提供很好的思路,我用二维数组试试看!:handshake
回复 使用道具 举报
joykerl 发表于 2014-11-19 19:21
感谢你提供很好的思路,我用二维数组试试看!

:lol不用客气,给我黑马币就行
回复 使用道具 举报
可以定义一个结构体,里面有次数和字母两个成员,然后根据次数进行快速排序。快速排序如果不知道,亲baidu一下,这个很好很强大的,希望对你有帮助,有问题留言哈
回复 使用道具 举报
kang3214 来自手机 中级黑马 2014-11-21 11:23:48
7#
不用数组也能解决!!
回复 使用道具 举报
joykerl 中级黑马 2014-11-21 11:24:29
8#
kang3214 发表于 2014-11-21 11:23
不用数组也能解决!!

能说一下解决思路么,谢谢
回复 使用道具 举报
定义4个int类型变量,分别计算ABCD的个数,然后用for循环打印它们和个数!!
回复 使用道具 举报
好像遇到过这个问题啊!!!
回复 使用道具 举报
周波 中级黑马 2014-12-25 10:20:47
11#
兄弟,这个解决了么?我也不太会,能不能把发我一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马