while(scanf("%d", x)==1)确保读入一个整数,否则终止循环,使用引用是为了调用者传值
站在用户的角度思考问题,与客户深入沟通,找到田林网站设计与田林网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站建设、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、网站空间、企业邮箱。业务覆盖田林地区。
众数定义:
众数(Mode)统计学名词,将数据按从大到小顺序排列后,在统计分布上具有明显集中趋势点的数值,代表数据的一般水平(众数可以不存在或多于一个)。
修正定义:是一组数据中出现频数最多的那个数值,用M。表示。
理性理解:简单的说,就是一组数据中占比例最多的那个数。
用众数代表一组数据,可靠性较差,不过,众数不受极端数据的影响,并且求法简便。在一组数据中,如果个别数据有很大的变动,选择中位数表示这组数据的“集中趋势”就比较适合。
当数值或被观察者没有明显次序(常发生于非数值性资料)时特别有用,由于可能无法良好定义算术平均数和中位数。例子:的众数是橙。
方法:
首先定义一个结构体:
struct judgedata
{ ???? newdata;
int number;
};
struct judgedata judge[n];
其中,newdata是和 DATA 类型一致的数组.
1.判断DATA[i]是否第一次出现(用for循环在数组judge[n]中寻找).
2.是就把他放入judge[j].newdata中(假设现在judge数组中有j-1个数),同时judge[j].number置1;
3.否的话,只需找到对应的data后,judge[?].number++就可以了。
4.找到judge[n].number的最大值,对应的judge[n].newdata就是要求的那个众数。
临时做了一个,参考下
#include stdio.h
#include stdlib.h
int main()
{
int n,*p;
int i,j,count;
int maxn=0,max=0;
scanf("%d",n);//输入个数
if(n0)
{
p=(int*)calloc(sizeof(int),n);//开辟内存,并初始化为0
}
else
{
printf("error input\n");
return 1;
}
for(i=0;in;i++)//扫描元素
scanf("%d",p+i);
for(i=0;in;i++)
{
if(p[i]==-1) continue;//-1的元素直接跳过,减少检索次数
count=1;//每次按1个处理
for(j=i+1;jn;j++)
if(p[i]==p[j])
{
p[j]=-1;//利用自然数从0开始,如果重复,设置为-1
count++;
}
if(countmaxn)
{
max=p[i];
maxn=count;
}
}
printf("\n%d\n%d\n",max,maxn);//输出
free(p);//释放资源
getchar();
return 0;
}
#includestdio.h
int main ()
{ int n,i,j,t,max=0,a[1000][2]={0};
scanf("%d",n);
for(i=0; in; i++)
scanf("%d",a[i][0]);
// printf("OK\n");
for(i=0; in-1; i++)
for(j=0; jn-1-i; j++)
if(a[j][0]a[j+1][0])
{ t=a[j][0];
a[j][0]=a[j+1][0];
a[j+1][0]=t;
}
for(i=0; in;)
{ a[i][1]=1;
for(j=i+1; a[j][0]==a[i][0]; j++)
a[i][1]++;
if(a[i][1]max)max=i;
i=j;
}
for(i=0; in; i++)
if(a[i][1]==a[max][1])
printf("%d ",a[i][0]);
return 0;
}