当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(12)
发布时间:2011/8/16 8:56:51 来源:城市学习网 编辑:ziteng
  一、填空题:人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。

  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:源程序存放在考生文件夹的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #define N 8

  typedef struct

  {int num;

  int year,month,day ;

  }STU;

  int fun(STU *std, STU *k, int year)

  {int i,n=0;

  for (i=0; i

  /**********found**********/

  if(___1___==year)

  /**********found**********/

  k[n++]= ___2___;

  /**********found**********/

  return (___3___);

  }

  main()

  {STU std[N]={ {1,1984,2,15},{2,1983,9,21},{3, 1984,9,1},{4,1983,7,15},{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};

  STU k[N]; int i,n,year;

  printf("Enter a year : "); scanf("%d",&year);

  n=fun(std,k,year);

  if(n==0)

  printf("\nNo person was born in %d \n",year);

  else

  {printf("\nThese persons were born in %d \n",year);

  for(i=0; i

  printf("%d %d-%d-%d\n",k[i].num,k[i].year, k[i].month,k[i].day);

  }

  }解题答案:

  /**********第一空**********/

  if(std[i].year==year)

  /**********第二空**********/

  k[n++]= std[i];

  /**********第三空**********/

  return (n);

  ****************************************** [NextPage]   二、改错题:给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

  例如,若输入整数:2310,则应输出:2、3、5、7、11。请改正程序中的语法错误,使程序能得出正确的结果。

  注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  /************found************/

  IsPrime (int n); /*定义函数*/

  {int i, m;

  m = 1;

  for (i = 2; i < n; i++)

  /************found************/

  if !(n%i)

  {m = 0; break ;}

  return (m);

  }

  main()

  {int j, k;

  printf("\nPlease enter an integer number between 2 and 10000: "); scanf("%d", &k);

  printf("\n\nThe prime factor(s) of %d is(are):", k);

  for(j = 2; j <= k; j++)

  if((!(k%j))&&(IsPrime(j)) ) printf("\n M", j);

  printf("\n");

  }

  解题答案:

  /************found************/

  IsPrime(int n) /*定义函数*/

  /************found************/

  if(!(n%i))

  ******************************************

   [NextPage]   三、程序题:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数 fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。

  注意: 部分源程序存在文件PROG1.C中。

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

  你编写的若干语句。

  给定源程序:

  #include

  #include

  #define N 10

  typedef struct ss

  {char num[10]; int s;} STU;

  fun(STU a[], STU *s)

  {

  }

  main ()

  {STU a[N]={ {"A01",81},{"A02",89},{"A03", 66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m ;

  int i;

  printf("***** The original data *****\n");

  for (i=0; i< N; i++)printf("No = %s Mark = %d\n", a[i].num,a[i].s);

  fun (a, &m);

  printf ("***** THE RESULT *****\n");

  printf ("The top : %s , %d\n",m.num, m.s);

  NONO();

  }

  NONO()

  {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

  FILE *rf, *wf ;

  STU a[N], m ;

  int i ;

  rf = fopen("in.dat","r");

  wf = fopen("out.dat","w");

  for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i].num, &a[i].s);

  fun(a, &m);

  fprintf (wf, "The top : %s, %d\n", m.num, m.s);

  fclose(rf);

  fclose(wf);

  }

  参考答案:

  fun( STU a[], STU *s )

  {

  int i, max = a[0].s, j = 0;

  for(i = 1 ; i < N ; i++)

  if(max < a[i].s) {

  j = i ;

  max = a[i].s ;

  }

  *s = a[j] ;

  }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved