第66套:
给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结
 果。
 注意:源程序存放在考生文件夹下的BLANK1.C中。
 不得增行或删行,也不得更改程序的结构!
 给定源程序:
 #include <stdio.h>
 typedef struct
 { char name[10];
 int age;
 }STD;
 STD fun(STD std[], int n)
 { STD max; int i;
 max= 1;
 for(i=1; i<n; 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 <stdio.h>
 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 <stdio.h>
 #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<M; i++ ){
 for( j=0; j<N; j++ )
 printf ( “%6d”, t[i][j] );
 printf("\n");
 }
 fun ( t, p );
 printf( “\nThe result is:\n” );
 for ( k = 0; k < N; k++ ) printf ( " %4d “, 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] ;
 }
 }