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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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 == 'A') {
            a++;
        }
        
        // 统计B出现的次数
        else if (array == 'B'){
            b++;
        }
        
        // 统计C出现的次数
        else if (array == 'C'){
            c++;
        }
        
        // 统计D出现的次数
        else if (array == '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='A'
        if(x == a && y[0] != 'A'&& y[1] != 'A' && y[2] != 'A' && y[3] != 'A')
        {
            y = 'A';
        }
        // 如果出现b次,则y='B'
        else if(x == b && y[0] !='B' && y[1] != 'B' && y[2] != 'B' && y[3] != 'B')
        {
            y = 'B';
        }
        // 如果出现c次,则y='C'
        else if(x == c && y[0] !='C' && y[1] != 'C' && y[2] != 'C' && y[3] != 'C')
        {
            y = 'C';
        }
        // 如果出现d次,则y='D'
        else
        {
            y = 'D';
        }
    }
   
    // 降序打印输出每个字母出现的次数
    for (i = 0; i<4; i++)
    printf("%c出现%d次\n",y,x);
   
    return 0;
}

评分

参与人数 1黑马币 +3 收起 理由
张文文 + 3 自己运行一下,改点错误

查看全部评分

14 个回复

倒序浏览
楼主,你确定你这代码可以编译通过;P
回复 使用道具 举报
华少code 来自手机 中级黑马 2015-1-29 10:30:56
藤椅
好乱啊!
回复 使用道具 举报
peanutgao 发表于 2015-1-29 09:38
楼主,你确定你这代码可以编译通过

这是找的前几期的学长的,他们学能通过
回复 使用道具 举报

因为是别人写的,我不会,也不敢乱改,有待优化
回复 使用道具 举报
水木清华hm 发表于 2015-1-29 10:35
这是找的前几期的学长的,他们学能通过

你可以在xcode运行下,应该会有好多错误
回复 使用道具 举报
peanutgao 发表于 2015-1-29 12:26
你可以在xcode运行下,应该会有好多错误

没有Xcode,只是给大家带来一点思路,抛砖引玉
回复 使用道具 举报
peanutgao 发表于 2015-1-29 09:38
楼主,你确定你这代码可以编译通过

不确定,仅限参考
回复 使用道具 举报
感谢楼主的思路,下面是本人修改后的正确代码:
   #include <stdio.h>
#include <string.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用来存放输入字符串的长度
   long lengths = strlen(array);
   
    // 定义for循环,当i小于字符串长度时,执行循环体,i加1
    for (i = 0; i<lengths; 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='A'
        if(x[i] == a )
        {
            y[i] = 'A';
        }
        // 如果出现b次,则y='B'
         if(x[i] == b )
        {
            y[i] = 'B';
        }
        // 如果出现c次,则y='C' if(x[i] == c)
         if(x[i] == c)
        {
            y[i] = 'C';
        }
        // 如果出现d次,则y='D'
         if (x[i] == d)
        {
            y[i] = 'D';
        }
        printf("%c出现%d次\n",y[i],x[i]);

    }

  
   
    return 0;
}

没有做精简,若有更精简的代码请多多交流!!

回复 使用道具 举报
1026238004 来自手机 中级黑马 2015-1-30 13:20:51
10#
顶顶!!!!
回复 使用道具 举报

谢谢                                   
回复 使用道具 举报
面试题?我的基础测试里面就有这道题,完全没思路,多谢分享
回复 使用道具 举报
Zeus-S 发表于 2015-1-30 15:25
面试题?我的基础测试里面就有这道题,完全没思路,多谢分享

希望可以帮到你
回复 使用道具 举报
学习了 受教了
回复 使用道具 举报

希望可以对你有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马