这个是我的思路
/*
7、 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
*/
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
// 定义a,b,c,d 来记录A,B,C,D出现的次数
int a = 0, b = 0, c = 0, d = 0;
printf("请输入一个字符串:");
scanf("%s", str);
// 遍历数组中的每一个字符串中的元素
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == 'A')
{
a++;
}else if (str[i] == 'B')
{
b++;
}else if (str[i] == 'C')
{
c++;
}else if(str[i] == 'D')
{
d++;
}
}
printf("A出现的次数:%d,B出现的次数:%d,C出现的次数:%d,D出现的次数:%d",a, b, c, d);
// 定义两个中间变量来存放数字和字母
int temp1 = 0, temp2 = 0;
int array[4][2] = {
{a,'A'},{b,'B'},{c, 'C'},{d, 'D'}
};
for (int i = 0; i < 3 ; i++)
{
for (int j = 0; j < 3; j++)
{
// 利用冒泡法,当两两比较的时候,如果要交换,那么同时交换字母数字(为了保证字母跟次数的对应关系)
if (array[j][0] <= array[j+1][0])
{
temp1 = array[j][0];
temp2 = array[j][1];
array[j][0] = array[j+1][0];
array[j][1] = array[j+1][1];
array[j+1][0] = temp1;
array[j+1][1] = temp2;
}
}
}
printf("出现次数由高到低输出字母和出现次数:\n");
// 利用for循环来,输出二维数组的字母和次数
for (int i =0;i < 4; i++)
{
printf("%c,%d次\n",array[i][1],array[i][0]);
}
return 0;
}
|