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

字號(hào):

★題目82
    已知數(shù)據(jù)文件in.dat中存有300個(gè)四位數(shù),并已調(diào)用讀函數(shù)readdat()把這些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsvalue(),其功能是:求出所有這些四位數(shù)是素?cái)?shù)的個(gè)數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調(diào)用寫(xiě)函數(shù)writedat()把結(jié)果cnt,pjz1,pjz2輸
    出到out.dat文件。
     例如:5591是素?cái)?shù),則該數(shù)滿足條件計(jì)算平均值pjz1,且個(gè)數(shù)cnt=cnt+1。
     9812是非素?cái)?shù),則該數(shù)不滿足條件計(jì)算平均值pjz2。
     部分源程序存在文件prog1.c中。
     程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2
     請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readdat()和寫(xiě)函數(shù)writedat()的內(nèi)容。
    #include
    int a[300],cnt=0;
    double pjz1=0.0,pjz2=0.0;
    
    int isp(int m)
    {int i;
    
     for(i=2;i if(m%i==0)return 0;
     return 1;
    }
    
    jsvalue()
    {int i;
     for(i=0;i<300;i++)
     if(isp(a[i])) {pjz1+=a[i];cnt++;}
     else pjz2+=a[i];
     if(cnt==0) pjz1=0;
     else pjz1/=cnt;
     if(300-cnt==0) pjz2=0;
     else pjz2/=(300-cnt);
    }
    
    main()
    {
     int i;
    
     readdat();
     jsvalue();
     writedat();
     printf("cnt=%d\n滿足條件的平均值pzj1=%7.2f\n不滿足條件的平均值pzj2=%7.2f\n",cnt,pjz1,pjz2);
    }
    
    readdat()
    {
     file *fp;
     int i;
     fp=fopen("in.dat","r");
     for(i=0;i<300;i++)fscanf(fp,"%d",&a[i]);
     fclose(fp);
    }
    
    writedat()
    {
     file *fp;
     int i;
     fp=fopen("out.dat","w");
     fprintf(fp,"%d\n%7.2f\n%7.2f\n",cnt,pjz1,pjz2);
     fclose(fp);
    }