- /**
- *6.从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
- */
- #include<stdio.h>
- int main(int argc, const char * argv[])
- {
- //1.新建四个整型变量用于分别存贮字符 A B C D的个数 因为多次输入字符串,计数累加 所以新建变量在主循环外面
- int countA = 0;
- int countB = 0;
- int countC = 0;
- int countD = 0;
-
- //2.主循环 持续提示用户输入字符串并打印
- while(TRUE)
- {
- //2.1系统提示用户输入字符串
- printf("请输入字符串并按回车确定\n");
-
- //2.1新建一个100长度的字符数组string用于存储用户输入字符串
- char string[100];
- scanf("%s",string);
-
- //2.2新建一个变量存贮字符串的长度
- unsigned long length = strlen(string);
-
- //2.3循环计数字符A B C D的个数
- for(int i = 0;i < length;i++)
- {
- switch (string[i]) {
- case 'A':
- countA++;
- break;
- case 'B':
- countB++;
- break;
- case 'C':
- countC++;
- break;
- case 'D':
- countD++;
- break;
-
- default:
- break;
- }
- }
-
- //2.4分别建立一个字符数组和一个整型数组用于存放字符的名字和计数
- char label[4]={'A','B','C','D'};
- int count[4]={countA,countB,countC,countD};
-
- //2.5元素交换需要用到的中间变量
- char labelSwap;
- int countSwap;
-
- //2.6 count数组冒泡排序 如果后面元素大于前面的元素 则分别交换label count数组的元素
- for(int i = 0;i < 4;i++)
- {
- for(int j = i+1;j < 4;j++)
- {
- if(count[i] < count[j])
- {
- //2.6.1交换count数组元素
- countSwap = count[i];
- count[i] = count[j];
- count[j] = countSwap;
-
- //2.6.2交换label数组元素
- labelSwap = label[i];
- label[i] = label[j];
- label[j] = labelSwap;
- }
- }
- }
-
- //2.7输出结果 字符和计数
- printf("%c %d %c %d %c %d %c %d",label[0],count[0],label[1],count[1],label[2],count[2],label[3],count[3]);
- }
-
- return 0;
- }
复制代码 |
|