这题用结构体做比较方便 然后弄个算法排序 我还是写出来吧
- /*
- 6.从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。
-
- */
- #include<stdio.h>
- #include<string.h>
- //
- typedef struct{
- int count; // 对应字母的个数
- char word; // 字母
-
- } countWithWord;
- int main()
- {
- // 选择排序算法的声明
- void selectSort(countWithWord cww[],int n);
- // 定义结构体数组并初始化
- countWithWord cww[4] ={{0,'A'},{0,'B'},{0,'C'},{0,'D'}};
-
- int i; // 循环变量
- char *str; // 定义字符指针,用来指向所输入的字符串
-
- gets(str); // 输入字符串
- // 分别统计字母的个数
- while(*str != '\0')
- {
- if(*str == 'A')
- {
- cww[0].count++;
- }
- else if(*str == 'B')
- {
- cww[1].count++;
- }
- else if(*str == 'C')
- {
- cww[2].count++;
- }
- else if(*str == 'D')
- {
- cww[3].count++;
- }
-
- str++;
- }
- // 排序
- selectSort(cww,4);
- // 输出排序后的结果
- for(i = 0;i < 4; i++)
- {
- printf("%c出现的次数------%d\n",cww[i].word,cww[i].count);
- }
- return 0;
- }
- void selectSort(countWithWord cww[],int n)
- {
- int i,j,k;
- countWithWord temp;
- for(i = 0; i < n-1; i++)
- {
- k = i;
- for(j = i + 1; j < n; j++)
- {
- if(cww[j].count > cww[k].count)
- {
- k = j;
- }
- }
- if(k != i)
- {
- temp = cww[k];
- cww[k] = cww[i];
- cww[i] = temp;
- }
- }
- }
复制代码 |