2020年全国计算机等级考试二级c语言上机精选题库(共60套)
                      1套题
一、填空题
      请补充main函数,该函数的功能是:计算每个学生科目的平均分,并把结果保存在数组bb中。
      例如,当score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}时,三个学生的平均分为:74.7 91.3 69.1
      仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include <stdio.h>
#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<N; i++)
        ___1___;
    for (i=0; i<N; i++)
    {
        for (j=0; j<M; j++)
            ___2___;
        bb[i] /= M;   
    }
计算机二级c语言选择题库
    for (i=0; i<N; i++)
        printf("\nstudent%d\taverage=%5.1f", i+1, bb[i]);
}
二、改错题
      下列给定程序中,函数fun的功能是:根据整型行参m,计算如下公式的值。
y=
例如,若m=2000,则应该输出:0.000160
请改正程序中的错误,使它能得出正确的结果。
#include <conio.h>
#include <stdio.h>
/********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));
}
三、编程题
      请编写函数fun,该函数的功能是:统计个年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把09岁年龄段的人数放在d[0]中,把1019岁年龄段的人数放在d[1]中,把2029岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#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<N; i++)
        age[i]=(int)(115*rnd());
    printf("The original data :\n");
    for(i=0; i<N; 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 );
}
答案:
一、1bb[i]=0 *(bb+i)=0   
2bb[i]+=score[i][j] bb[i]=b[i]+score[i][j] bb[i]=score[i][j]+bb[i]
二、1fun(int m)应改为 double fun(int m)
2for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100)
三、
void  fun (int  *a, int  *b)
{
  int  i, j;
  for(j=0;j<M;j++)
    b[j]=0;
for(i=0;i<N;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)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。