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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嗨灬小凯 中级黑马   /  2015-4-20 13:11  /  1300 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

#include <stdio.h>
#define N 100
int main(){
char s[N];//定义一个字符数组用来存放用户输入的字符串
printf("请输入一组字符");
gets(s);//从电脑接收用户输入的字符串
int a = 0,b = 0,c = 0,d = 0;
for (int i = 0; i < N; i++) {//循环N次,遇到字符ABCD,分别让变量abcd自加1,最终abcd就是字符ABCD出现的次数
    switch (s[i]) {
        case 65:
            a++;
            break;
        case 66:
            b++;
            break;
        case 67:
            c++;
            break;
        case 68:
            d++;
            break;
        default:
            break;
    }
}

int num[4] = {a,b,c,d};//讲ABCD的次数赋值到一个整形数组中
for (int m = 0 ; m < 3; m++) {//用冒泡排序使整形数组得数字从高到低排序
    for (int n = 0; n < 3-m; n++) {
        int temp = 0;
        if (num[n] < num[n+1]) {
            temp = num[n+1];
            num[n+1] = num[n];
            num[n] = temp;
        }
    }
}

for (int t = 0; t < 4; t++) {//循环4次,看每个数组的值哪个和初始值abcd相同,并把对应的字母和次数打印出来,同时把次数赋值为一个不可能出现的数字负数,避免下次循环再次打印。
    if (num[t] == a){
        printf("A的个数是%d\n",a);
        a = -1;
    }if(num[t] == b){
        printf("B的个数是%d\n",b);
        b = -1;
    }if (num[t] == c){
        printf("C的个数是%d\n",c);
        c = -1;
    }if (num[t] == d){
        printf("D的个数是%d\n",d);
        d = -1;
    }
}
}

6 个回复

倒序浏览
谷飞飞 来自手机 中级黑马 2015-4-20 14:21:14
沙发
基础测试题
回复 使用道具 举报
我基础测试里也有这道题。果断让我略过了。。
回复 使用道具 举报
最好弄个结构体吧,虽然我的题里面没这道题但是看到很多人都有,也就顺手做了一下,仅供参考
  1. #import <Foundation/Foundation.h>

  2. typedef struct
  3. {
  4.     char zifu;
  5.     int count;
  6. }apple;

  7. int main()
  8. {
  9.     apple a[4] = {{'A',0},{'B',0},{'C',0},{'D',0}};
  10.    
  11.     printf("请输入一个字符串:");
  12.    
  13.     char input[100];
  14.    
  15.     scanf("%s",input);
  16.    
  17.     for(int i = 0;i<strlen(input);i++)
  18.     {
  19.         switch(input[i])
  20.         {
  21.             case 'A':a[0].count++;break;
  22.             case 'B':a[1].count++;break;
  23.             case 'C':a[2].count++;break;
  24.             case 'D':a[3].count++;break;
  25.             default:break;
  26.         }
  27.     }
  28.    
  29.     for(int i = 0;i<4;i++)
  30.         for(int j = i+1;j<4;j++)
  31.         {
  32.             if(a[i].count<a[j].count)
  33.             {
  34.                 apple c = a[i];
  35.                 a[i] = a[j];
  36.                 a[j] = c;
  37.             }
  38.         }
  39.    
  40.     for(int i = 0;i<4;i++ )
  41.     {
  42.         printf("%c = %d\n",a[i].zifu,a[i].count);
  43.     }
  44.    
  45.     return 0;
  46. }
复制代码
回复 使用道具 举报
丶小千 发表于 2015-4-20 15:21
最好弄个结构体吧,虽然我的题里面没这道题但是看到很多人都有,也就顺手做了一下,仅供参考
...

这个方法好。。
回复 使用道具 举报
感觉屌屌滴样子额。。。。
赞个
回复 使用道具 举报
我是来拿币的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马