【考點(diǎn)分析】 本題考查的知識點(diǎn)包括:C語言中文件讀函數(shù),if條件判斷結(jié)構(gòu),對多個整數(shù)求平均值和方差的算法等。
【解題思路】 此題屬于數(shù)學(xué)類問題。分析題干要求,得出解本題主要需解決3個問題:問題1如何實(shí)現(xiàn)從已打開的文件中依次讀取數(shù)據(jù)到數(shù)組的操作,問題2如何分離并統(tǒng)計(jì)出奇數(shù)和偶數(shù)的個數(shù)及和值,并計(jì)算平均值;問題3如何計(jì)算奇數(shù)的方差。
本題的解題思路為:首先使用C語言的庫函數(shù)fscanf()將文件中的數(shù)依次讀入數(shù)組xx中,然后通過循環(huán)判斷得出需要的數(shù)據(jù)(奇數(shù)個數(shù)、偶數(shù)個數(shù)、奇數(shù)及偶數(shù)的和);最后根據(jù)題目中已給出的公式和之前保存的數(shù)據(jù)計(jì)算出奇數(shù)的方差。
【參考答案】
int ReadDat(void)
{
FILE *fp;
int i,j; /*計(jì)數(shù)器變量*/
if((fp=fopen("IN.DAT","r"))==NULL) return 1;
for(i=0;i<100;i++) /*依次讀取整型數(shù)據(jù)放入數(shù)組xx中*/
{
for(j=0;j<10;j++)
fscanf(fp,"%d,",&xx[i*10+j]);
fscanf(fp,"\n");
if(feof(fp))
break; /*文件讀取結(jié)束,則退出*/
}
fclose(fp);
return 0;
}
void Compute(void)
{
int i; /*定義循環(huán)控制變量*/
int tt[MAX]; /*定義數(shù)組保存奇數(shù)*/
for(i=0;i<1000;i++)
if(xx[i]%2!=0)
{
odd++; /*計(jì)算出xx中奇數(shù)的個數(shù)odd*/
ave1+=xx[i]; /*求奇數(shù)的和*/
tt[odd-1]=xx[i]; /*將奇數(shù)存入數(shù)組tt中*/
}
else
{
even++; /*計(jì)算出xx中偶數(shù)的個數(shù)even*/
ave2+=xx[i]; /*求偶數(shù)的和*/
}
ave1/=odd; /*求奇數(shù)的平均值*/
ave2/=even; /*求偶數(shù)的平均值*/
for(i=0;i totfc+=(tt[i]-ave1)*(tt[i]-ave1)/odd; /*求所有奇數(shù)的方差*/ } 【易錯提示】 文件操作函數(shù)fscanf()和feof()的用法,if判斷語句中邏輯表達(dá)式,對方差計(jì)算公式運(yùn)用錯誤。 相關(guān)推薦: 2014年計(jì)算機(jī)等級考試過關(guān)技巧
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |