数组-07. 求一批整数中出现最多的个位数字(20)

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:

输入在第1行中给出正整数N(<=1000),在第2行中给出N个不超过整型范围的正整数,数字间以空格分隔。

输出格式:

在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:
3
1234 2345 3456
输出样例:
3: 3 4

#include <stdio.h>

int main()
{
	int num[1000];
	//输入正整数N 
	int n;
	scanf("%d",&n);
	//输入N个正整数存入数组Num 
	int i;
	for(i=0;i<n;i++){
		scanf("%d",&num[i]);
	}
	int count[10]={0};//0-9计数
	int a,temp,mask ;
	for(i=0;i<n;i++){
		temp = num[i];
		mask = 1;
		while(temp > 9){
			temp /= 10;
			mask *= 10;
		}
		while(mask>0){
			a = num[i] / mask;
			count[a]++;
			num[i] %= mask;
			mask /= 10;
		}
	} 
	int max[10],nmax=0;
	int numOfMax=0;
	//遍历count[],找出最大值,并且存入max[]
	max[0] = -1;
	for(i=0;i<10;i++){
		if(count[i] > numOfMax){
			nmax = 0;
			numOfMax = count[i];
			max[nmax] = i;
		}
		else if(count[i] == numOfMax){
			nmax++;
			max[nmax] = i;
		}
	} 
	//输出 
	printf("%d:",numOfMax);
	for(i=0;i<=nmax;i++){
		printf(" %d",max[i]);
	}
	return 0;
}


你可能感兴趣的:(c,pat)