当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(38)
发布时间:2011/8/29 11:35:01 来源:城市学习网 编辑:ziteng
  一、填空题:函数fun的功能是:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

  例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后

  为:6、7、8、9、5、1、2、3、4。

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

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

  给定源程序:

  #include

  #define N 9

  void fun(int a[], int n)

  {int i, t, p;

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

  p = (n%2==0)?n/2:n/2+___1___;

  for (i=0; i

  {

  t=a[i];

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

  a[i] = a[p+___2___];

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

  ___3___ = t;

  }

  }

  main()

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

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

  for (i=0; i

  fun(b, N);

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

  for (i=0; i

  }

  解题答案:

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

  p = (n%2==0)?n/2:n/2+1;

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

  a[i] = a[p+i];

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

  a[p+i] = t;

  ****************************************** [NextPage]  二、改错题:给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在 a中,最小的放在c中,中间的放在b中。

  例如,输入的数为:55 12 34,

  输出结果应当是:a=55.0 , b=34.0 , c=12.0。

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

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

  给定源程序:

  #include

  void fun(float *a,float *b,float *c)

  {

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

  float *k;

  if(*a<*b)

  {k=*a; *a=*b; *b=k;}

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

  if(*a>*c)

  {k=*c; *c=*a; *a=k;}

  if(*b<*c)

  {k=*b; *b=*c; *c=k;}

  }

  main()

  {float a,b,c;

  printf("Input a b c: "); scanf("%f%f%f",&a, &b,&c);

  printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);

  fun(&a,&b,&c);

  printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);

  }

  解题答案:

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

  float k;

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

  if(*a<*c)

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

  [NextPage]   三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组 s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

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

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

  给定源程序:

  #include

  #define N 16

  typedef struct

  {char num[10];

  int s;

  } STREC;

  int fun(STREC *a, STREC *b)

  {

  }

  main()

  {STREC s[N]={{"GA05",85},{"GA03",76}, {"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};

  STREC h[N];

  int i,n;FILE *out ;

  n=fun(s,h);

  printf("The %d highest score :\n",n);

  for(i=0;i

  printf("%s %4d\n",h[i].num,h[i].s);

  printf("\n");

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

  fprintf(out, "%d\n",n);

  for(i=0;i

  fprintf(out, "%4d\n",h[i].s);

  fclose(out);

  }

  参考答案:

  int fun( STREC *a, STREC *b )

  {

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

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

  if(max < a[i].s) max = a[i].s ; /* 找出最高成绩 */

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

  if(max==a[i].s) b[n++] = a[i] ; /* 找相等的最高成绩并存入数组b中 */

  return n; /* 返回符合条件的人数 */

  }

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