全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言上機(jī)93

字號(hào):

☆題目93
    請(qǐng)編制函數(shù)readdat()實(shí)現(xiàn)從文件in.dat中讀取1000個(gè)十進(jìn)制整數(shù)到數(shù)組xx中;請(qǐng)編制函數(shù)compute(),分別計(jì)算出xx中奇數(shù)的個(gè)數(shù)odd,偶數(shù)的個(gè)數(shù)even,平均值aver以及方差totfc的值,最后調(diào)用函數(shù)writedat()把結(jié)果輸出到out.dat文件中。
     計(jì)算方差的公式如下:
     n 2
     totfc=1/n ∑ (xx[i]-aver)
     i=1
     原始數(shù)據(jù)文件存放的格式是:每行存放10個(gè)數(shù),并用逗號(hào)隔開(kāi)。(每個(gè)數(shù)均大于0且小于等于2000)
     部分源程序存在文件prog1.c中。
     請(qǐng)勿改動(dòng)主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。
    #include
    #include
    #include
    #define max 1000
    
    int xx[max],odd=0,even=0;
    double aver=0.0,totfc=0.0;
    void writedat(void);
    
    int readdat(void)
    {
     int i;
     file *fp;
    
     if((fp=fopen("in.dat","r"))==null) return 1;
    /***************編制函數(shù)readdat()*****************/
     for(i=0;i { fscanf(fp,"%d,",&xx[i]);
     if((i+1)%10==0)
     fscanf(fp,"\n");
     }
    /*********************************************/
     fclose(fp);
     return 0;
    }
    
    void compute(void)
    { int i;
     for(i=0;i { if(xx[i]%2) odd++;
     else even++;
     aver+=xx[i];
     }
     aver/=max;
     for(i=0;i totfc+=(xx[i]-aver)*(xx[i]-aver);
     totfc/=max;
    }