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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© black747521 中级黑马   /  2015-11-8 21:01  /  545 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.c
//  测试题 7
//  7、 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
//  Created by black on 15/11/2.
//  Copyright © 2015年 black. All rights reserved.
//

#include <stdio.h>
#include <string.h>


int main(int argc, const char * argv[]) {

    // 定义一个字符串数组
    char str[100];
    //定义四个变量,分别统计出现次数
    int count_A = 0,count_B = 0,count_C = 0,count_D = 0;
    //定义指针数组,用来排序
    int *arr[4]={&count_A,&count_B,&count_C,&count_D};

    //提示输入字符串
    printf("请输入字符串:\n");
    fgets(str, sizeof(str), stdin);

    //分别统计ABCD出现的次数
    for (int i=0; i<strlen(str); i++) {

        switch (str) {
            case 65:
                count_A++;
                break;
            case 66:
                count_B++;
                break;
            case 67:
                count_C++;
                break;
            case 68:
                count_D++;
                break;
        }
    }

    //选择排序法给arr排序,arr[0]指向最大的count
    for (int i=0; i<3; i++) {
        for (int j=i+1; j<4; j++) {
            if (*arr < *arr[j]) {
                int *temp = arr;
                arr = arr[j];
                arr[j] = temp;
            }
        }
    }

    //按字母出现次数输出结果
    for (int i=0; i<4; i++) {
        if (arr == &count_A) {
            printf("A出现的次数:%d\n",count_A);
        }else if (arr == &count_B) {
            printf("B出现的次数:%d\n",count_B);
        }else if (arr == &count_C) {
            printf("C出现的次数:%d\n",count_C);
        }else if (arr == &count_D) {
            printf("D出现的次数:%d\n",count_D);
        }
    }
    return 0;
}


0 个回复

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