习题7-2 求一批整数中出现最多的个位数字 (20分)
题目来源:浙大C题目集
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。
输入格式:
输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。
输出格式:
在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。
输入样例:
3
1234 2345 3456
输出样例:
3: 3 4
解题思路:
利用数组下表
建立数组 int N[10]; N里面的下标分别表示1个数字,数组里的元素表示这个数字出现的次数。录入结束后,先找出最大次数,然后再用寻找和最大次数相等的下标(即出现次数最多的数字)。
再写一个求每个数字的每位数字的函数
以下是我的源码:
#include<stdio.h>
int ge(int n );
int main()
{
int N[10]={0};
int n; //n个数字
scanf("%d",&n);
int i; //用来遍历
int temp; //临时储存
for(i=0;i<n;i++)
{
scanf("%d",&temp);
while(temp!=0)
{ //依次统计没位数字出现的次数
N[ge(temp)]++;
temp/=10;
}
}
int max=N[0];
for(i=0;i<10;i++)
{ //寻找最大次数
if(N[i]>max)
max=N[i];
}
printf("%d:",max);
for(i=0;i<10;i++)
{ //通过最大次数寻找对应的数字
if(N[i]==max)
printf(" %d",i);
}
return 0;
}
int ge(int n)
{
return n%10;
}
如果对你有帮助的话,点个赞再走呗 > o < !