/*
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;
}
}
} |
|