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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//  5. 输入字符串,统计A、B、C、D出现次数,由高到低输出字母和次数。
//
//  Created by itJG on 15/11/23.
//  Copyright © 2015年 luo. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 定义一个数组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;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;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马