当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(46)
发布时间:2011/7/14 11:39:32 来源:城市学习网 编辑:ziteng
  第一题:请补充fun函数,该函数的功能是:用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中.
  例如,输入如下整数:876 675 896 101 301 401 980 431 451 777,则输出结果为:6,  980.
  请勿改动主函数main和其他函数中的任何内容,仅在fun 函数的横线上填入所编写的若干表达式或语句.
  #include
  #include
  void fun(int  s, int  t, int  ___1__)
  {
  int  i, max;
  max = s[0];
  for (i=0; i  if (__2__)
  {
  max = s[i];
  *k = __3__;
  }
  }
  main()
  {
  int  a[10] = {876, 675, 896, 101, 301, 401, 980, 431, 451, 777}, k;
  fun(a, 10, &k);
  printf("%d, %d\n", k, a[k]);
  }
  参考答案:
  (1) *k
  (2) s[i]>max
  (3) i [NextPage]   第二题:已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序输出结果应为23.197745。
  请改正程序中的错误,使程序能得出正确的结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  #include
  #include
  #include
  /********found********/
  fun(int  n)
  {
  double  sum, s0, s1, s2, s;
  int  k;
  sum = 1.0;
  if (n <= 2)
  sum = 0.0;
  s0 = 0.0;
  s1 = 0.0;
  s2 = 1.0;
  for (k=4; k<=n; k++)
  {
  s = s0+s1+s2;
  sum += sqrt(s);
  s0 = s1;
  s1 = s2;
  s2 = s;
  }
  /********found********/
  return sum
  }
  main()
  {
  int  n;
  printf("Input N=");
  scanf("%d", &n);
  printf("%lf\n", fun(n));
  }
  参考答案:
  第一处fun(int n)应改为 double fun(int n)
  第二处 return sum应改为  return sum;
 [NextPage]   第三题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  #include
  #define    N  16
  typedef   struct
  {
  char  num[10];
  int   s;
  }  STREC;
  void  fun ( STREC  a[ ] )
  {
  }
  main ()
  {
  STREC  s[N]= {{"GA005",85}, {"GA003",76}, {"GA002",69}, {"GA004",85},
  {"GA001",91}, {"GA007",72}, {"GA008",64}, {"GA006", 87},
  {"GA015",85}, {"GA013",91}, {"GA012",64}, {"GA014",91},
  {"GA011",66}, {"GA017",64}, {"GA018",64}, {"GA016",72}};
  int  i; FILE  *out;
  fun ( s );
  printf ("The  data  after  sorted  :\n");
  for (i=0; i {
  if  ( (i)%4==0 )
  printf ("\n");
  printf ("%s  M  ", s[i].num, s[i].s);
  }
  printf ("\n");
  out=fopen ("out.dat", "w");
  for (i=0; i {
  if (  (i)%4==0 && i )
  fprintf  (out,  "\n" );
  fprintf (out,  "M", s[i].s);
  }
  fprintf ( out, "\n" );
  fclose (out );
  }
  参考答案:
  void  fun ( STREC  a[ ] )
  { int  i,j;
  STREC t;
  for(i=0; i   for(j=i; j      if(a[i].s       {  t=a[i];
  a[i]=a[j];
  a[j]=t;
  }
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved