- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- int main(int argc, const char * argv[]) {
-
- char ziMu[4]={'A','B','C','D'};
- int ziMuCount[4]={0};//保存ziMu数组对应的个数
-
- //用户输入
- printf("请输入一串字符:\n");
- char arr[80]={'\0'};
- gets(arr);
-
- //依次遍历‘A’,‘’B‘,’C‘,’D‘在字符串数组arr里的个数
- for(int i='A',k=0;i<='D';i++,k++)
- {
- for(int j=0;j<strlen(arr);j++)
- {
- if (i==arr[j])
- {
- ziMuCount[k]++;
- }
- }
- }
- //选择排序将ziMuCount数组从大到小排列,相对于的ziMu数组也更换顺序
- for(int i=0;i<3;i++) //1 3 5 2
- {
- for(int j=i+1;j<4;j++)
- {
- if(ziMuCount[i]<ziMuCount[j])
- {
- //更换ziMuCount数组元素的大小
- int tempCount;
- tempCount=ziMuCount[i];
- ziMuCount[i]=ziMuCount[j];
- ziMuCount[j]=tempCount;
- //更换ziMuCount数组元素相对应ziMu数组元素
- char temp;
- temp=ziMu[i];
- ziMu[i]=ziMu[j];
- ziMu[j]=temp;
-
- }
- }
- }
- //遍历输出
- for (int i=0; i<4; i++)
- {
- printf("字母%C的个数是:%d\n",ziMu[i],ziMuCount[i]);
- }
- return 0;
- }
复制代码
输入字符串,统计'A'、'B'、'C'、'D'出现次数,由高到低输出字母和次数.期待还有更好的解决方案。
|