当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(36)
发布时间:2011/8/29 11:33:06 来源:城市学习网 编辑:ziteng
  一、填空题:函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。例如:若a

  所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动

  后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。

  注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大 值的下标。

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

  注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!

  给定源程序:

  # include

  #define N 9

  void fun(int a[], int n)

  {int i,j, max, min, px, pn, t;

  for (i=0; i

  {

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

  max = min = ___1___;

  px = pn = i;

  for (j=i+1; j

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

  if (max<___2___)

  {max = a[j]; px = j;}

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

  if (min>___3___)

  {min = a[j]; pn = j;}

  }

  if (pn != i)

  {t = a[i]; a[i] = min; a[pn] = t;

  if (px == i) px =pn;

  }

  if (px != i+1)

  {t = a[i+1]; a[i+1] = max; a[px] = t;}

  }

  }

  main()

  {int b[N]={9,1,4,2,3,6,5,8,7}, i;

  printf("\nThe original data :\n");

  for (i=0; i

  fun(b, N);

  printf("\nThe data after moving :\n");

  for (i=0; i

  }

  解题答案:

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

  max = min = a[i];

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

  if (max

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

  if (min>a[j])

  ****************************************** [NextPage]   二、改错题:给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n 项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,该项的斐波拉契数值为:13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 给定源程序:

  #include

  long fun(int g)

  {

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

  switch(g); /* switch语句*/

  {case 0: return 0;

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

  case 1 ;case 2 : return 1 ;

  }

  return(fun(g-1)+fun(g-2));

  }

  main()

  {long fib; int n;

  printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n);

  fib=fun(n);

  printf("fib = %d\n\n",fib);

  }

  解题答案:

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

  switch(g) /* switch语句*/

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

  case 1: return 1; case 2:return 1;

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

 [NextPage]   三、程序题:某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。

  例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当

  是:78.875。

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

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。

  给定源程序:

  #include

  #define N 8

  typedef struct

  {char num[10];

  double s[N];

  double ave;

  } STREC;

  void fun(STREC *a)

  {

  }

  main()

  {STREC s={"GA005",85.5,76,69.5,85,91,72,64.5, 87.5};

  int i;

  void NONO ();

  fun(&s);

  printf("The %s's student data:\n", s.num);

  for(i=0;i

  printf("%4.1f\n",s.s[i]);

  printf("\nave=%7.3f\n",s.ave);

  NONO();

  }

  void NONO()

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

  FILE *out ;

  int i,j ; STREC s[10] = {

  {"GA005",85.5,76,69.5,85,91,72,64.5,87.5},

  {"GA001",82.5,66,76.5,76,89,76,46.5,78.5},

  {"GA002",72.5,56,66.5,66,79,68,46.5,58.5},

  {"GA003",92.5,76,86.5,86,99,86,56.5,88.5},

  {"GA004",82,66.5,46.5,56,76,75,76.5,63.5},

  {"GA006",75.5,74,71.5,85,81,79,64.5,71.5},

  {"GA007",92.5,61,72.5,84,79,75,66.5,72.5},

  {"GA008",72.5,86,73.5,80,69,63,76.5,53.5},

  {"GA009",66.5,71,74.5,70,61,82,86.5,58.5},

  {"GA010",76,66.5,75.5,60,76,71,96.5,93.5},

  };

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

  for(i = 0 ; i < 10 ; i++) {

  fun(&s[i]);

  fprintf(out, "%7.3f\n", s[i].ave);

  }

  fclose(out);

  }

  参考答案:

  void fun(STREC *a)

  {

  int i ;

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

  a->ave = a->ave + a->s[i] ;

  a->ave /= N ;

  }

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