题目如下
代码如下
#include<stdio.h>
int main()
{
int n,count,max,maxcount;
scanf("%d", &n);
int a[n];
count=0;max = 0;maxcount = 0;
int i,j;
for (i = 0; i < n; i++)
{scanf("%d", &a[i]);}//输入数组a[n]
for (i = 0; i < n; i++){
for (j = 0; j < n; j++)
{if (a[i] == a[j])//计算a[i]出现的次数
{ count=count+1;}
}
if (count > maxcount)//比较a[i]的次数,用max来储存出现次数最多的数,maxcount储存重复次数
{maxcount = count;
max = a[i];
}
count = 0;//这里一定要清零,否则会记录所有元素的次数
}
printf("%d %d", max, maxcount);
return 0;
}
扩展一下如果我们想要输出数组中每一个元素的出现次数,代码如下
#include<stdio.h>
int main()
{
int n,i,j,num=0;
scanf("%d",&n);//先输入n,这样n就不是变量,是一个数,下面就可以定义数组a[n]
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);//输入数组a[n]
int flag= 0;//用来判断什么时候输出结果,什么时候不输出
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i]==a[j]){//判断是否有出现重复,满足条件代表有重复出现
if(i<=j){
num++;
flag=1;}
else//结合上面if的条件看,就是i>j的情况,代表出现了重复对比了,我们直接跳出
{flag=0;break;}//离break最近的循环体退出
}
}
if(flag == 1)
printf("%d的出现次数是%d\n",a[i],num);
num=0;}//这里一定要清零,否则会记录所有元素的次数
return 0;
}