C语言求数组中出现次数最多的元素。 这样为什么不对。

#include<stdio.h>
int main()
{
int a[20],b[20],i,n,t=0,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
b[i]=1;
}
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(t=0;t<n;t++)
{
if((i!=t)&&(a[i]==a[t]))
{
b[i]=b[i]+1;
}
}
}
k=0;
for(i=0;i<n;i++)
{
if(b[i]>=t)
{
t=b[i];
k=i;
}
}
printf("%d",a[k]);
return 0;
}
这是题目

if((i!=t)&&(a[i]==a[t]))
{
b[i]=b[i]+1;
}
这个 比如 a[1] 和a[4]相等, 那么i=1 t=4
i=4 t=1会计算两次
改成
for(t=i+1;t<n;t++)追问

运行结果还是不对的

追答

增加一个t的初始值。 

#include<stdio.h>
int main()
{
int a[20],b[20],i,n,t=0,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
b[i]=1;
}
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(t=i+1;t<n;t++)
{
if((i!=t)&&(a[i]==a[t]))
{
b[i]=b[i]+1;
}
}
}
k=0;
t=b[0];//之前循环中t改动过 é‡æ–°åˆå§‹åŒ–。 
for(i=0;i<n;i++)
{
if(b[i]>=t)
{
t=b[i];
k=i;
}
}
printf("%d",a[k]);
return 0;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网