就业数据资源平台
当前位置:首页 > C语言程序设计
2014年计算机二级C语言上机模拟试题64

 给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

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


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


  给定源程序: 


  #include  


  typedef struct 


  { char name[10]; 


  int age; 


  }STD; 


  STD fun(STD std[], int n) 


  { STD max; int i; 


  max= ___1___; 


  for(i=1; i  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"); 


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


  }


  解题思路: 


  本题是从结构体中找出年龄最大的记录。 


  第一处:给存放最大者max赋初值,所以应填:*std。 


  第二处:当前最大者的年龄和结构中所有的年龄进行比较,所以应填:std[i].age。 


  第三处:输出最大者的姓名和年龄,所以应填:max.name。 


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


  给定程序MODI1.C中函数 fun 的功能是:实现两个整数的交换。 


  例如给a和b分别输入:60 和 65,输出为:a = 65 b = 60 


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


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


  给定源程序: 


  #include  


  void fun ( int a, b ) 


  { int t; 


  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 ); 


  }


  解题思路: 


  第一处:函数形参定义不正确,在定义第2个形参时,也应加上int。由于通过该函数实现两数交换,在C语言中,必须交换地址中的值,所以应定义为int *a,int *b。 


  第二处:要交换地址中的值,不能交换地址,必须指定地址中的值,因此应改为t=*b;*b=*a;*a=t;。 


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


  请编一个函数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] ) 


  { 


  } 


  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( ); 


  } 


  解题思路: 


  本题是求出二维数组每列中最小元素,并依次放入pp所指一维数组中。 


  参考答案: 


  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]) { 


   min=tt[j][i] ; 


  k = j ; 


  } 


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


  } 


  } 


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

就业数据资源平台