数字排序201503(C语言版)

该博客介绍了一个C语言程序,用于读取n个整数并统计它们的出现次数,按照出现次数降序输出。程序首先通过冒泡排序对输入的整数进行排序,然后计算每个数的重复次数,并按要求输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述
  给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
输入格式
  输入的第一行包含一个整数n,表示给定数字的个数。
  第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
  输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
样例输入
      12
      5 2 3 3 1 3 4 2 5 2 3 5
样例输出
      3 4
      2 3
      5 3
      1 1
      4 1
程序代码
#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int a[n], b[n], i, j, k, count=1;
	for(i=0; i<n; i++)
	scanf("%d", &a[i]);
	for(i=0; i<n-1; i++)
	for(j=0; j<n-1-i; j++)
	if(a[j]>a[j+1])
	{
		k = a[j];
		a[j] = a[j+1];
		a[j+1] = k;
	}
	for(i=0; i<n; i++)
	b[i] = 0;
	for(i=0; i<n; i++)
	{
		if(a[i+1]==a[i])
		count++;
		else
		{
			b[i]=count;
			count=1;
		}
	}
	j=0;
	for(i=0; i<n; i++)
	if(b[i]>0) j++;
	while(j)
	{
	    k=0;
	    for(i=0; i<n; i++)
	    if(b[i]>k) k=b[i];
	    for(i=0; i<n; i++)
	    if(b[i]==k)
	    {
	        printf("%d %d\n", a[i], b[i]);
	        b[i]=0; j--;
	    }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值