C语言排序计数输出题

C语言排序问题
随机输入100以内的10个数字,对其进行从小到大的排序,如果存在重复出现的数字请统计它重复的次数,并输出排除重复数字后的排序序列。求问完整c代码(想知道统计重复出现次数的方法)
  • 先看截图:

img

  • 代码参考如下:
#include<stdio.h>
#include<stdlib.h>

// 冒泡排序 【从前往后冒泡】
void sort(int a[],int n)
{
    int i,j,t,noswap;
    for(i=0;i< n-1; i++)
    {
        noswap=1;
        for(j=0;j<n-1-i;j++)
            if(a[j+1]<a[j])
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
                noswap=0;
            }
        if(noswap)  
            break;
    }
}

int main()
{
    int n, i;
    printf("input n: ");
    scanf("%d", &n);

    int a[n];
    int b[101] = {0};

    int c[n];
    int m = 0;
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
        b[a[i]]++;

        if (b[a[i]] == 1) 
            c[m++] = a[i];
    } 

    sort(c, m);

    printf("排序后的数:");

    for (i = 0; i < m; i++) 
    {
        printf("%d ", c[i]);
    }

    for (i = 0; i < 101; i++) 
    {
        if (b[i] > 1) 
        {
            printf("\n重复的数=%d, 出现次数=%d", i, b[i]);
        }
    }

}
 

既然没有C++的map和set可用,数据量也小,最简单的方法是:开一个大小为101的数组,初值赋0,然后遇到一个数字就把数组的对应值+1,最后遍历数组即可。
如果我的回答对你有帮助,还望采纳!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632