while(scanf("%d", x)==1)確保讀入一個(gè)整數(shù),否則終止循環(huán),使用引用是為了調(diào)用者傳值
站在用戶的角度思考問題,與客戶深入溝通,找到田林網(wǎng)站設(shè)計(jì)與田林網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋田林地區(qū)。
眾數(shù)定義:
眾數(shù)(Mode)統(tǒng)計(jì)學(xué)名詞,將數(shù)據(jù)按從大到小順序排列后,在統(tǒng)計(jì)分布上具有明顯集中趨勢(shì)點(diǎn)的數(shù)值,代表數(shù)據(jù)的一般水平(眾數(shù)可以不存在或多于一個(gè))。
修正定義:是一組數(shù)據(jù)中出現(xiàn)頻數(shù)最多的那個(gè)數(shù)值,用M。表示。
理性理解:簡(jiǎn)單的說,就是一組數(shù)據(jù)中占比例最多的那個(gè)數(shù)。
用眾數(shù)代表一組數(shù)據(jù),可靠性較差,不過,眾數(shù)不受極端數(shù)據(jù)的影響,并且求法簡(jiǎn)便。在一組數(shù)據(jù)中,如果個(gè)別數(shù)據(jù)有很大的變動(dòng),選擇中位數(shù)表示這組數(shù)據(jù)的“集中趨勢(shì)”就比較適合。
當(dāng)數(shù)值或被觀察者沒有明顯次序(常發(fā)生于非數(shù)值性資料)時(shí)特別有用,由于可能無法良好定義算術(shù)平均數(shù)和中位數(shù)。例子:的眾數(shù)是橙。
方法:
首先定義一個(gè)結(jié)構(gòu)體:
struct judgedata
{ ???? newdata;
int number;
};
struct judgedata judge[n];
其中,newdata是和 DATA 類型一致的數(shù)組.
1.判斷DATA[i]是否第一次出現(xiàn)(用for循環(huán)在數(shù)組judge[n]中尋找).
2.是就把他放入judge[j].newdata中(假設(shè)現(xiàn)在judge數(shù)組中有j-1個(gè)數(shù)),同時(shí)judge[j].number置1;
3.否的話,只需找到對(duì)應(yīng)的data后,judge[?].number++就可以了。
4.找到j(luò)udge[n].number的最大值,對(duì)應(yīng)的judge[n].newdata就是要求的那個(gè)眾數(shù)。
臨時(shí)做了一個(gè),參考下
#include stdio.h
#include stdlib.h
int main()
{
int n,*p;
int i,j,count;
int maxn=0,max=0;
scanf("%d",n);//輸入個(gè)數(shù)
if(n0)
{
p=(int*)calloc(sizeof(int),n);//開辟內(nèi)存,并初始化為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的元素直接跳過,減少檢索次數(shù)
count=1;//每次按1個(gè)處理
for(j=i+1;jn;j++)
if(p[i]==p[j])
{
p[j]=-1;//利用自然數(shù)從0開始,如果重復(fù),設(shè)置為-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;
}