2013計(jì)算機(jī)二級(jí)C語言上機(jī)練習(xí)題及答案(1)

字號(hào):

為大家收集整理了《2013計(jì)算機(jī)二級(jí)C語言上機(jī)練習(xí)題及答案(1)》供大家參考,希望對(duì)大家有所幫助!??!
    一、填空題
    請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:計(jì)算每個(gè)學(xué)生科目的平均分,并把結(jié)果保存在數(shù)組bb中。
    例如,當(dāng)score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}時(shí),三個(gè)學(xué)生的平均分為:74.7 91.3 69.1。
    僅在橫線上填入所編寫的若干表達(dá)式或語句,勿改動(dòng)函數(shù)中的其他任何內(nèi)容。
    #include
    #define N 3
    #define M 5
    main()
    {
    int i, j;
    static float score[N][M] =
    {
    {78.5, 84, 83, 65, 63},
    {88, 91.5, 89, 93, 95},
    {72.5, 65, 56, 75, 77}
    };
    float bb[N];
    for (i=0; i
    ___1___;
    for (i=0; i
    {
    for (j=0; j
    ___2___;
    bb[i] /= M;
    }
    for (i=0; i
    printf("\nstudent%d\taverage=%5.1f", i+1, bb[i]);
    }
    參考答案:
    1、bb[i]=0 或 *(bb+i)=0
    2、bb[i]+=score[i][j] 或bb[i]=b[i]+score[i][j] 或bb[i]=score[i][j]+bb[i]
    二、改錯(cuò)題
    下列給定程序中,函數(shù)fun的功能是:根據(jù)整型行參m,計(jì)算如下公式的值。
    y=
    例如,若m=2000,則應(yīng)該輸出:0.000160。
    請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
    #include
    #include
    /********found********/
    fun(int m)
    {
    double y = 0, d;
    int i;
    /********found********/
    for (i=100, i<=m, i+=100)
    {
    d = (double)i*(double)i;
    y += 1.0/d;
    }
    return (y); 
    }
    main()
    {
    int n = 2000;
    printf("\nThe result is %lf\n", fun(n));
    }
    參考答案:
    1、fun(int m)應(yīng)改為 double fun(int m)
    2、for(i=100,i<=m,i+=100)應(yīng)改為for(i=100;i<=m;i+=100)
    三、編程題
    請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:統(tǒng)計(jì)個(gè)年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放在主函數(shù)的age數(shù)組中;要求函數(shù)把0至9歲年齡段的人數(shù)放在d[0]中,把10至19歲年齡段的人數(shù)放在d[1]中,把20至29歲年齡段的人數(shù)放在d[2]中,其余依此類推,把100歲(含100)以上年齡的人數(shù)都放在d[10]中。結(jié)果在主函數(shù)中輸出。
    請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
    #include
    #define N 50
    #define M 11
    void fun(int *a, int *b)
    {
    }
    double rnd()
    {
    static t=29, c=217, m=1024, r=0;
    r=(r*t+c)%m;
    return((double)r/m);
    }
    main()  
    {
    int age[N], i, d[M];
    FILE *out ;
    for(i=0; i
    age[i]=(int)(115*rnd());
    printf("The original data :\n");
    for(i=0; i
    printf((i+1)%10==0?"%4d\n":"%4d",age[i]);
    printf("\n\n");
    fun( age, d);
    out=fopen ("out.dat","w");
    for(i=0;i<10;i++)
    {
    printf("%4d---%4d : %4d\n", i*10, i*10+9, d[i]);
    fprintf(out, "%4d---%4d : %4d\n", i*10, i*10+9, d[i]);
    }
    printf(" Over 100 : %4d\n", d[10]);
    fprintf(out, " Over 100 : %4d\n", d[10]);
    fclose (out );
    }
    參考答案:
    void fun (int *a, int *b)
    {
    int i, j;
    for(j=0;j
    b[j]=0;
    for(i=0;i
    if(a[i]>=0&&a[i]<=9)
    b[0]+=1;
    else if(a[i]>=10&&a[i]<=19)
    b[1]+=1;
    else if(a[i>=20&&a[i]<=29)
    b[2]+=1;
    else if(a[i]>=30&&a[i]<=39)
    b[3]+=1;
    else if(a[i>=40&&a[i]<=49])
    b[4]+=1;
    else if(a[i]>=50&&a[i]<=59)
    b[5]+=1;
    else if(a[i]>=60&&a[i]<=69)
    b[6]+=1;
    else if(a[i]>=70&&a[i]<=79)
    b[7]+=1;
    else if(a[i]>=80&&a[i]<=89)
    b[8]+=1;
    else if(a[i]>=90&&a[i]<=99)
    b[9]+=1;
    else
    b[10]+=1;
    }