全國計算機等級考試三級C語言上機題81-90

字號:

☆題目81
    已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsvalue(),其功能是:求出千位數(shù)上的數(shù)加百位數(shù)等于十位數(shù)上的數(shù)加個位數(shù)上的數(shù)的個數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調用寫函數(shù)writeDat()把結果輸出到out.dat文件。
    例如:7153,7+1=5+3,則該數(shù)滿足條件計算平均值pjz1,且個數(shù)cnt=cnt+1。8129,8+1<>2+9,則該數(shù)不滿足條件計算平均值pjz2。
    部分源程序存在文件prog1.c中。
    程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2。
    請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)writeDat()的內容。
    #include
    int a[300],cnt=0;
    double pjz1=0.0,pjz2=0.0;
    jsvalue()
    {int i,thou,hun,ten,data,n=0;
    for(i=0;i<300;i++)
    {thou=a/1000; hun=a00/100;
    ten=a0/10; data=a;
    if(thou+hun==ten+data) {cnt++;pjz1+=a;}
    else {n++;pjz2+=a;}
    }
    if(cnt==0) pjz1=0;
    else pjz1/=cnt;
    if(n==0) pjz2=0;
    else pjz2/=n;
    }
    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);
    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);
    }
    ************************************************************************
    ★題目82
    已知數(shù)據(jù)文件in.dat中存有300個四位數(shù),并已調用讀函數(shù)ReadDat()把這些數(shù)存入數(shù)組a中,請編制一函數(shù)jsvalue(),其功能是:求出所有這些四位數(shù)是素數(shù)的個數(shù)cnt,再求出所有滿足此條件的四位數(shù)平均值pjz1,以及不滿足此條件的四位數(shù)平均值pjz2,最后調用寫函數(shù)writeDat()把結果cnt,pjz1,pjz2輸
    出到out.dat文件。
    例如:5591是素數(shù),則該數(shù)滿足條件計算平均值pjz1,且個數(shù)cnt=cnt+1。
    9812是非素數(shù),則該數(shù)不滿足條件計算平均值pjz2。
    部分源程序存在文件prog1.c中。
    程序中已定義數(shù)組:a[300],已定義變量:cnt,pjz1,pjz2
    請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)writeDat()的內容。
    #include
    int a[300],cnt=0;
    double pjz1=0.0,pjz2=0.0;
    int isP(int m)
    {int i;
    for(i=2;iif(m%i==0)return 0;
    return 1;
    }
    jsvalue()
    {int i;
    for(i=0;i<300;i++)
    if(isP(a)) {pjz1+=a;cnt++;}
    else pjz2+=a;
    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);
    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);
    }
    ***********************************************************************
    ☆題目83
    請編制函數(shù)ReadDat()實現(xiàn)從文件IN.DAT中讀取1000個十進制整數(shù)到數(shù)組xx中;請編制函數(shù)Compute()分別計算出xx中奇數(shù)的個數(shù)odd,奇數(shù)的平均值ave1,偶數(shù)的平均值ave2以及所有奇數(shù)的方差totfc的值,最后調用函數(shù)WriteDat()把結果輸出到OUT.DAT文件中。
    計算方差的公式如下:
    N 2
    totfc=1/N ∑ (xx-ave1)
    i=1
    設N為奇數(shù)的個數(shù),xx為奇數(shù),ave1為奇數(shù)的平均值。
    原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù),并用逗號隔開。(每個數(shù)均大于0且小于等于2000)
    部分源程序存在文件prog1.c中。
    請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內容。
    #include
    #include
    #include
    #define MAX 1000
    int xx[MAX],odd=0,even=0;
    double ave1=0.0,ave2=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);
    if((i+1)==0)
    fscanf(fp,"\n");
    }
    /*******************************************/
    fclose(fp);
    return 0;
    }
    void Compute(void)
    { int i,yy[MAX];
    for(i=0;iyy=0;
    for(i=0;iif(xx%2) { yy[odd++]=xx; ave1+=xx;}
    else { even++; ave2+=xx;}
    if(odd==0) ave1=0;
    else ave1/=odd;
    if(even==0) ave2=0;
    else ave2/=even;
    for(i=0;itotfc+=(yy-ave1)*(yy-ave1)/odd;
    }
    void main()
    {
    int i;
    for(i=0;iif(ReadDat()){
    printf("數(shù)據(jù)文件IN.DAT不能打開!\007\n");
    return;
    }
    Compute();
    printf("ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,ave1,ave2,totfc);
    WriteDat();
    }
    void WriteDat(void)
    {
    FILE *fp;
    int i;
    fp=fopen("OUT.DAT","w");
    fprintf(fp,"%d\n%f\n%f\n%f\n",odd,ave1,ave2,totfc);
    fclose(fp);
    }
    *************************************************************************