题目: 输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从小到大输出。
(本代码没有最后从小到大输出功能。。)
#include<stdio.h>
#include<stdlib.h>
#define MAXN 100
#define INF 100000
int num[MAXN];
int nun[MAXN];
int sum[MAXN];
int main(void)
{
int a, i, n = 0, j;
while(scanf("%d", &a) == 1)
{
num[n++] = a;
}
int m = 0, ok;
for(i=0; i<n; i++)
{
ok = 1;
if(num[i] == -1)
{
continue;
}
else
{
nun[m] = num[i];//无重复的数字
sum[m] = ok;
for(j=i+1; j<n; j++)
{
if(num[j] == -1)
{
continue;
}
else
{
if(num[i] == num[j])
{
sum[m] = ++ok; //次数
num[j] = -1;
}
}
}
num[i] = -1;
++m;
}
}
int max = -INF;
for(i = 0; i<m; i++)
{
printf("%d ", sum[i]);
}
printf("\n");
for(i = 0; i<m; i++)
{
if(sum[i] > max)
max = sum[i];
}
for(i = 0; i<m; i++)
{
if(max == sum[i])
printf("%d\n", nun[i]);
}
return 0;
}