【真题1】 给定程序的功能是把a数组中的n 个数,和b 数组中逆序的n 个数一一 对应相乘、求平方,结果存在c 数组中。 例如:当a 数组中的值是:1、3、5、7、8,b 数组中的值是:2、3、4、5、8 调用该函数后,c 中存放的数据是:64、225、400、441、256 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。 #include < stdio.h >void fun(int a[], int b[], int c[], int n) { int i; for (i=0; i< n; i++) /**************found**************/ ___1___ = (a[i] * b[n-1-i]) *(a[i] * b[n-1-i]); } main() { int i, a[100]={1,3,5,7,8}, b[100]={2,3,4,5,8}, c[100]; /**************found**************/ fun(___2___, 5); printf("The result is: "); /**************found**************/ for (i=0; i< 5; i++) printf("%d ", ___3___); printf("\n"); } (2011年2月) 解析: 本题的考核点是for 循环的使用。 提示思路:本题通过for 循环,使用公式c[i] = (a[i] * b[n-1-i]) *(a[i] * b[n-1-i]),求得数组a与数组b逆序之积的平方,将计算结果存在c 数组中。 答案:【1】c[i] 【2】a,b,c 【3】c[i] 【真题2】 给定程序modi.c 是:计算S=f(f(-1.0)+f(5.0))的值。当程序正确 时,结果为:2488.000000。f(x)函数定义如下: ┌2x^2+3x+4 (x< =2) 设f(x)=│ └-2x^2+3x-4 (x >2) 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main 函数, #include < conio.h >#include < stdio.h >#include < math.h >double f(double x) { double y; /************found************/ If (x< =2.0) y=2.0*x*x+3.0*x+4.0; else y=-2.0*x*x+3.0*x-4.0; /************found************/ return y } main() {clrscr(); printf("%f\n",f(f(-1.0)+f(5.0))); } (2011年2月) 解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。 本题中的第一个错误:在C 语言中,命令语句应为小写字母,所以程序中语句 "If (x< =2.0)"应改为"if (x< =2.0)"; 本题中的第二个错误:在C 语言中,应以分号作为语句的分隔符,所以程序中 语句"return y"应改为"return y;"。 【真题3】 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值 返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编 写的若干语句。 #include < conio.h >#include < stdio.h >#define M 4 #define N 5 int fun (int a[M][N]) {……} main() { int aa[M][N]={{1,3,5,7,9}, {2,9,9,9,4}, {6,9,9,9,8}, {1,3,5,7,0}}; int i,j,y; clrscr(); printf("The original data is:\n"); for (i=0;i< M;i++) { for(j=0;j< N;j++) printf("%6d",aa[i][j]); printf("\n"); } y=fun(aa); printf("\nThe sum: %d\n",y); printf("\n"); } (2011年2月) 解析: 本题的考核点是c 语言中嵌套循环语句和条件判断语句的使用。 提示思路:二维数组的周边元素的特点是:它有一个下标为0 或为数组上界。 所以我们只需判断数组的下标是否为0或数组上界即可。按行、列进行循环可 以保证符合条件的元素只被运算一次。 int fun ( int a[M][N] ) {int i, j, sum = 0; for (i = 0; i < M; i++) for (j = 0; j < N; j++) if ((i == 0)||(i == M - 1)||(j == 0)||(j == N - 1) )/*判断a[i][j]是否 为数组中的第一行或最后一行或第一列或最后一列*/ sum += a[i][j];/*对a数组的周边元素求和*/ return sum; } |