全國計算機等級考試二級C語言上機93

字號:

☆題目93
    請編制函數(shù)readdat()實現(xiàn)從文件in.dat中讀取1000個十進制整數(shù)到數(shù)組xx中;請編制函數(shù)compute(),分別計算出xx中奇數(shù)的個數(shù)odd,偶數(shù)的個數(shù)even,平均值aver以及方差totfc的值,最后調(diào)用函數(shù)writedat()把結(jié)果輸出到out.dat文件中。
     計算方差的公式如下:
     n 2
     totfc=1/n ∑ (xx[i]-aver)
     i=1
     原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù),并用逗號隔開。(每個數(shù)均大于0且小于等于2000)
     部分源程序存在文件prog1.c中。
     請勿改動主函數(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;
    }