频道栏目
首页 > 资讯 > C语言 > 正文

2014年计算机二级C语言上机模拟试题55

13-11-09        来源:[db:作者]  
收藏   我要投稿
 函数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  { 

  max = min = ___1___; 

  px = pn = i; 

  for (j=i+1; j  if (max<___2___) 

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

  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  printf("n"); 

  fun(b, N); 

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

  for (i=0; i  printf("n"); 

  }

 解题思路: 

  第一处:外循环每循环一次均把数组a当前位置的值,分别赋值给max和min变量,所以应填: a[i]。 

  第二处:判断max是否小于a[j],若小于,则把a[j]赋值给max,所以应填:a[j]。 

  第三处:判断min是否大于a[j],若大于,则把a[j]赋值给min,所以应填:a[j]。 

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

  给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n 项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…… 

  例如,若给n输入7,该项的斐波拉契数值为:13。 

  请改正程序中的错误,使它能得出正确结果。 

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

  给定源程序: 

  #include  

  long fun(int g) 

  { 

  switch(g); 

  { case 0: return 0; 

  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 = %dn",n); 

  fib=fun(n); 

  printf("fib = %dnn",fib); 

  }

 解题思路: 

  第一处:switch后有多余的分号。 

  第二处:case 1后没有返回语句,也应该为return 1;。所以应改为:case 1: return 1; case 

  2:return 1;。 

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

  某学生的记录由学号、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; 

  fun( &s ); 

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

  for(i=0;i  printf("%4.1fn",s.s[i]); 

  printf("nave=%7.3fn",s.ave); 

  NONO(); 

  } 

  解题思路: 

  本题是求记录结构中学生课程成绩的平均值,其结果仍放在该记录结构中。 

  参考答案: 

  void fun(STREC *a) 

  { 

  int i ; 

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

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

  a->ave /= N ; 

  } 

  ※※※※※※※※※※※※※※※※※※※※※※※※※

相关TAG标签
上一篇:2014年计算机二级C语言上机模拟试题53
下一篇:2014年计算机二级C语言上机模拟试题56
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站