/*
5、 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
1.定义数组并获得字符串
2.遍历数组,同时计算ABCD出现次数
3.冒泡排序,同时排序次数和对应的字母
4.遍历输出排列后的字母
*/
#include <stdio.h>
#define L 1000
int main(int argc, const char * argv[])
{
char inputChar[L];
printf("请从键盘输入字符串,回车结束:(友情提醒:输入\\0会影响统计结果!)\n");
gets(inputChar);//获得输入字符串
int a= 0,b= 0,c= 0,d= 0;//计数器
for (int i= 0; i< L; i++) {//遍历数组
switch (inputChar[i]) {//计数ABCDC出现次数
case 'A':
a++;
break;
case 'B':
b++;
break;
case 'C':
c++;
break;
case 'D':
d++;
break;
default:
break;
}
}
//冒泡排序 同时排序次数和对应的字母
int arr[4]= {a,b,c,d};
char trr[4] = {'A','B','C','D'};
int len = 4;
for (int i =0; i< len-1; i++) {
for (int j= 0; j< len-1-i; j++) {
if (arr[j]< arr[j+1]) {
int tmp1 = 0;
tmp1 = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp1;
char tmp2 = '0';
tmp2 = trr[j];
trr[j] = trr[j+1];
trr[j+1] = tmp2;
}
}
}
//遍历输出排列后的字母
for (int i= 0; i< len; i++) {
printf("字母%c出现现%d次\n",trr[i],arr[i]);
}
printf("The end\n");
return 0;
} |
|