当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(15)
发布时间:2011/8/16 8:59:21 来源:城市学习网 编辑:ziteng
  一、填空题:给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

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

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

  给定源程序:

  #include

  typedef struct

  {char name[10];

  int age;

  }STD;

  STD fun(STD std[], int n)

  {STD max; int i;

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

  max= ___1___;

  for(i=1; i

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

  if(max.age<___2___) max=std[i];

  return max;

  }

  main()

  {STD std[5]={"aaa",17,"bbb",16,"ccc",18,"ddd", 17,"eee",15 };

  STD max;

  max=fun(std,5);

  printf("\nThe result: \n");

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

  printf("\nName : %s, Age : %d\n", ___3___,max.age);

  }

  解题答案:

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

  max= *std;

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

  if(max.age

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

  printf("\nName : %s, Age : %d\n", max.name,max.age);

  }

  ****************************************** [NextPage]  二、改错题:给定程序MODI1.C中函数 fun 的功能是:实现两个整数的交换。 例如给a和b分别输入:60 和 65,输出为:a = 65 b = 60 请改正程序中的错误,使它能得出正确的结果。

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

  给定源程序:

  #include

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

  void fun (int a, b)

  {int t;

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

  t = b; b = a ; a = t;

  }

  main ()

  {int a, b;

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

  fun (&a , &b);

  printf (" a = %d b = %d\n ", a, b);

  }

  解题答案:

  #include

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

  void fun(int *a, int *b)

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

  t=*b; *b=*a; *a=t;

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

  [NextPage]   三、程序题:请编一个函数void fun(int tt[M][N ], int pp[N]),tt指向一个M行N列的 二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

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

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

  你编写的若干语句。

  给定源程序:

  #include

  #define M 3

  #define N 4

  void fun (int tt[M][N], int pp[N])

  {

  }

  NONO()

  {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */

  int i, j, k, m, t[M][N], p[N] ;

  FILE *rf, *wf ;

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

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

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

  for(i=0; i

  for(j=0; j

  fscanf (rf, "m", &t[i][j]);

  }

  fun (t, p);

  for (k = 0; k < N; k++) fprintf (wf, " M ", p[k]);

  fprintf(wf, "\n");

  }

  fclose(rf);

  fclose(wf);

  }

  main()

  {int t [M][N]={{22,45, 56,30},{19,33, 45,38},{20, 22,66,40}};

  int p [N], i, j, k;

  printf ("The original data is : \n");

  for(i=0; i

  for(j=0; j

  printf ("m", t[i][j]);

  printf("\n");

  }

  fun (t, p);

  printf("\nThe result is:\n");

  for (k = 0; k < N; k++) printf (" M ", p[k]);

  printf("\n");

  NONO();

  参考答案:

  void fun ( int tt[M][N], int pp[N] )

  {

  int i,j, min, k ;

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

  min = tt[0][i] ; k = 0 ;

  for(j = 1 ; j < M ; j++)

  if(min > tt[j][i]) {

  \TAB min=tt[j][i] ;

  k = j ;

  }

  pp[i] = tt[k][i] ;

  }

  }

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