- /**
- * 测试题8:统计ABCD出现的次数 并按顺序从高到低输出字母和出现的次数
- */
- #include <stdio.h>
- int main()
- {
- int a=0,b=0,c=0,d=0;//分别对应 A,B,C,D的出现次数
- int i=0,j=0;
- int arr[4];
- char abcd[] = {'A','B','C','D'}; //为了防止 当出现次数相同时 无法区分
- char s[1000]; //接收字符串存入数组
- printf("请输入字符串:");
- gets(s);
- //首先计算字母出现的次数
- while(s[i])
- {
- if(s[i]=='A')
- {
- a++;
- }
- else if(s[i]=='B')
- {
- b++;
- }
- else if(s[i]=='C')
- {
- c++;
- }
- else if(s[i]=='D')
- {
- d++;
- }
- i++;
- }
- //将次数存入数组
- arr[0]=a;
- arr[1]=b;
- arr[2]=c;
- arr[3]=d;
- printf("字母和次数从高到低分别是:\n");
- //对数组进行从大到小的排序,并根据次数来判断字母的顺序
- //冒泡排序 每次循环把最大的依次放在0,1,2,3位置
- for(i=0; i<4; i++)
- {
- for(j=i+1;j<4;j++)
- {
- if(arr[j]>arr[i])
- {
- int temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- }
- }
- //通过次数来判别是哪个字母 并输出 a[i]顺序是从大到小
- //当数量==a,并且A未被排序
- if((arr[i]==a)&&abcd[0])
- {
- printf("%c\t%d\n",'A',a);
- abcd[0]=0; //当A已经被排好序后 不能再出现A
- }
- else if((arr[i]==b)&&abcd[1])
- {
- printf("%c\t%d\n",'B',b);
- abcd[1]=0;
- }
- else if((arr[i]==c)&&abcd[2])
- {
- printf("%c\t%d\n",'C',c);
- abcd[2]=0;
- }
- else if((arr[i]==d)&&abcd[3])
- {
- printf("%c\t%d\n",'D',d);
- abcd[3]=0;
- }
- }
- return 0;
- }
复制代码
哈哈。给你我的方法。 |