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

字號(hào):

題目23
    已知在文件in.dat中存有n個(gè)(個(gè)數(shù)<200)實(shí)數(shù),函數(shù)readdat()讀取這n個(gè)實(shí)數(shù)并存入數(shù)組xx中。請(qǐng)編制函數(shù)calvalue(),其功能要求:
    1、求出這n個(gè)實(shí)數(shù)的平均值aver;
    2、分別求出這n個(gè)實(shí)數(shù)的整數(shù)部分之和sumint以及小數(shù)部分之和sumdec,最后調(diào)用函數(shù)writedat()把所求的結(jié)果輸出到文件out.dat中。
     注意:部分源程序已給出。
     請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)readdat()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。
    #include
    #include
    #define maxnum 200
    
    float xx[maxnum] ;
    int n= 0 ; /* 文件in.dat中共有多少個(gè)實(shí)數(shù) */
    double aver=0.0;/*平均值*/
    double sumint=0.0;/*整數(shù)部分之和*/
    double sumdec=0.0;/*小數(shù)部分之和*/
    
    int readdat(void) ;
    void writedat(void) ;
    
    void calvalue(void)
    {int i;
     for (i=0;i {sumint+=(long)xx[i];
     sumdec+=xx[i]-(long)xx[i];
     aver+=xx[i];
     }
     aver/=n;
    }
    
    void main()
    { int i ;
     clrscr() ;
     for(i = 0 ; i < maxnum ; i++) xx[i] = 0 ;
     if(readdat()) {
     printf("數(shù)據(jù)文件in.dat不能打開!\007\n") ;
     return ;
     }
     calvalue() ;
     printf("文件in.dat中共有實(shí)數(shù)=%d個(gè)\n", n) ;
     printf("平均值=%.2lf\n", aver) ;
     printf("整數(shù)部分之和=%.2lf\n", sumint) ;
     printf("小數(shù)部分之和=%.2lf\n", sumdec) ;
     writedat() ;
    system("pause");
    }
    
    int readdat(void)
    {
     file *fp ;
     int i = 0 ;
    
     if((fp = fopen("in.dat", "r")) == null) return 1 ;
     while(!feof(fp)) {
     fscanf(fp, "%d,", &xx[i++]) ;
     }
     fclose(fp) ;
     return 0 ;
    }
    
    void writedat(void)
    {
     file *fp