实验7-1-11 求整数序列中出现次数最多的数 (15分)
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
#include <stdio.h>
int main (void){
int n;
scanf ("%d",&n);
int i,j,k;
int a[n];
int b[n][2];
for (i = 0;i < n;i++){
scanf ("%d",&a[i]);
}
b[0][0]=a[0];//不明白为什么此行删去会发生段错误
k=0;
//写入数组A,遍历出一个无重复数字的B
//B为二维数组,第二行用于记录出现次数
for (i = 0;i < n;i++){
for (j = 0;j < n;j++){
if (a[i] == a[j]) {
if (i != j) break;
else {
b[k][0]=a[i];
b[k][1]=0;
k++;
}
}
}
}
{a,b;
}
//得到B后,遍历出数组A中重复出现的次数。
for (i = 0;i < n;i++){
for (j = 0;j < k;j++){
if (a[i] == b[j][0]) b[j][1]++;
}
}
int max=b[0][1];
int w;
//记完数后,找出重复次数最多的那一组数的下标
for (i = 0;i < k;i++){
if (max < b[i][1]) {
w=i;
max=b[i][1];
}
}
printf ("%d %d",b[w][0],b[w][1]);
return 0;
}