#include <stdio.h>
#include <string.h>
int main()
{
//提示用户输入一段字符串
printf("请输入一大堆字符串:\n");
//定义一个数组,存放用户输入的字符串
char c[100];
//接收用户输入的字符换,并赋值给数组
scanf("%s",c );
//定义4个变量,分别统计A,B,C,D的出现次数
int countA=0,countB=0,countC=0,countD=0;
//定义一个变量保存用户所输入的字符串的长度
int length = strlen(c );
//for循环进行判断,符合条件给各自加1
for (int i=0; i<length; i++)
{
if (c=='A') {
countA++;
}
else if(c=='B')
{
countB++;
}
else if(c=='C')
{
countC++;
}
else if(c=='D')
{
countD++;
}
}
//定义一个数组存放统计好的A,B,C,D的次数
int array[4]={countA,countB,countC,countD };
//利用冒泡法对A,B,C,D进行排序
for(int i=0;i<4;i++)
{
for (int j=0;j<3-i ;j++)
{
if (array[j]<array[j+1])
{
//当前元素小于后一个元素,就交换他们的位置
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
//定义一个数组,存放A,B,C,D的
char letter[4];
//将array和letter数组的出现的次数和字母一一对应
for (int i=0; i<4; i++)
{
if (array==countA && letter[0]!='A'&& letter[1]!='A'&&letter[2]!='A'&&letter[3]!='A') {
letter='A';//if条件里面为什么要加letter[0]!='A'&& letter[1]!='A'&&letter[2]!='A'&&letter[3]!='A'这样判断不会使数组lettle里面不会存放ABCD了吗?那是不是 就矛盾了呀 ,怎麽想都想不通
}
else if(array==countB && letter[0]!='B'&& letter[1]!='B'&&letter[2]!='B'&&letter[3]!='B'){
letter='B';
}
else if(array==countC && letter[0]!='C'&& letter[1]!='C'&&letter[2]!='C'&&letter[3]!='C'){
letter='C';
}
else
{
letter[i ]='D';
}
}
//降序打印输出每个字母出现的次数
for(int i=0;i<4;i++)
{
printf("%c出现%d次\n",letter,array);
}
return 0;
} |
|