【真题1】 函数fun 的功能是:找出一维整型数组元素中最大的值和它所在的下 标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中x 是数组名, n 是x 中的数据个数,max 存放最大值,index 存放最大值 所在元素的下标。 #include < stdlib.h >#include < stdio.h >void fun(int a[], int n , int *max, int *d ) { int i,base,subscript; base=a[0]; subscript=0; for(i=1;i< n;i++) { if(a[i] >__1_____) { subscript=i; base=a[i]; } } *max=base; __2____=subscript; } main() { int i, x[20], max , index, n = 10; randomize() ; for (i=0;i < n;i++) {x[i] = rand()%50; printf("%4d", x[i]) ; } printf("\n"); fun( x, n , &max, &index); printf("Max =%5d , Index =%4d\n",max, index ); } (2011年2月) 答案:1: base 2: *d 【真题2】 给定程序modi.c 中函数 fun 的功能是:判断一个整数m 是否是素数, 若是返回1,否则返回0。 在main()函数中,若fun 返回1 输出YES,若fun 返回0 输出NO!。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数。 #include < conio.h >#include < stdio.h >int fun ( int m ) { int k = 2; while ( k < = m && (m%k)) /************found************/ k++ /************found************/ if (m = k ) return 1; else return 0; } main( ) { int n; clrscr( ); printf( "\nPlease enter n: " ); scanf( "%d", &n ); if ( fun ( n ) ) printf( "YES\n" ); else printf( "NO!\n" ); } (2011年2月) 解析: 本题的考核点是素数的判断。 素数即只能被1 及其本身整除的数。 C 语言中,分号是语句的组成部分,各语句间以分号作为分隔。源程序中 "k++"语句是错误的,应改为"k++;"或相同作用的语句。 C 语言中,判断变量或表达式相等用"=="。源程序中"if(m=k)"语句是错误 的,应改为"if(m==k)"或相同作用的语句。 【真题3】 程序定义了N×N 的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][N]),函数的功能是:使数组左下半三角元素中的值全部置成0。 例如:a数组中的值为 |1 9 7| a= |2 3 8|,则返回主程序后a数组中的值应为 |4 5 6| |0 9 7| |0 0 8| |0 0 0| 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun #include < stdio.h >#include < conio.h >#include < stdlib.h >#define N 5 int fun(int a[][N]) {……} main() { int a[N][N],i,j; clrscr(); printf("***** The array *****\n"); for (i=0;i< N;i++) { for (j=0;j< N;j++) { a[i][j]=rand()%10;printf("%4d",a[i][j]);} printf("\n"); } fun(a); printf("THE RESULT\n"); for (i=0;i< N;i++) { for (j=0;j< N;j++) printf("%4d",a[i][j]); printf("\n"); } } (2011年2月) 解析: 本题的考核点是C语言中循环嵌套和 if 语句的使用。 提示思路:对于本题,我们给出的参考函数采取的算法是:使用嵌套循环,外 循环是行循环,内循环是列循环,这样可以对整个数组中的元素进行符合条件 的运算。本题要求是对数组左下半三角元素中的值全部赋0,所以首先要使用 if 语句判断出数组的左下半三角,再进行运算。观察二维数组可以看出,数组左 下半三角中的元素 ,行坐标值都大于等于列坐标值。 int fun ( int a[][N] ) { int i,j; for (i=0;i< N;i++) for (j=0;j< N;j++) { if (i >=j)/*判断当前数组元素是否为二维数组中左下半三角中的元素*/ a[i][ j] =0; } } |