【真题1】 下列程序定义了N×N 的二维数组,并在主函数中赋值。函数fun()的功 能是:求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a 数 组中的值为 a=0 1 2 7 9 1 11 21 5 5 2 21 6 11 1 9 7 9 10 2 5 4 1 4 1 则返回主程序后s 的值应为310。 试题程序: #include < stdio.h >#include< conio.h >#include< stdlib.h >#define N 5 int fun (int w[][N]) { int i,j; int __1__=0; for(i=0;i< N;i++) for(j=0;j< N;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0 或N-1,则它一定 是周边元素*/ {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/ } return __2___; /*返回周边元素的平方和*/ } main() { int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1}; int i, j; int s; clrscr(); printf("*****The array*****\n "); for (i=0; i< N; i++) { for (j=0;j< N;j++) {printf("%4d ",a[i][j]);} printf("\n "); } s=fun(a); printf("*****THE RESULT*****\n "); printf("The sum is : %d\n ",s); } (2011年2月) 解析: 该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且 只要下标中有一个为0或N-1,则它一定是周边元素。 答案:1: s 2: s 【真题2】 给定程序modi.c 中,fun 函数的功能是:判断两个指针所指存储单元中 的值的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不 为0。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main 函数, #include < stdio.h >#include < conio.h >/************found************/ fun(double *a,*b) {/************found************/ if(a*b >0.0) return 1; else return 0; } main() { double n,m; clrscr(); printf("Enter n,m:");scanf("%lf%lf",&n,&m); printf("\nThe value of function is:%d\n",fun(&n,&m)); } (2011年2月) 解析: 本题的考核点是C语言中函数的入口参数的用法。 函数的参数表是由逗号分隔的变量表,变量表由变量类型和变量名组成,与普 通的变量说明不同,函数参数必须同时具有变量类型和变量名,程序中"fun ( double *a, *b )"语句第二个函数参数没有变量类型,是错误的,应该改为 "fun ( double *a, double *b )"或相同作用的语句。 因为a和b均为双精度型指针变量,所以判断a乘b是否大于0,是没有意义 的。应该把程序中的"if ( a * b > 0.0 )" 语句改为"if((*a) * (*b) > 0.0 )"或相同作用的语句。 【真题3】 编写函数fun,它的功能是:求n 以内(不包括n)同时能被3 与7 整 除的所有自然数之和的平方根s,并作为函数值返回。 例如若n 为1000 时,函数值应为:s=153.909064。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编 写的若干语句。 #include < conio.h >#include < math.h >#include < stdio.h >double fun(int n) {……} main() /*主函数*/ { clrscr(); printf("s=%f\n",fun(1000)); } (2011年2月) 解析: 本题的考核点是n 以内能被3与7 整除的所有数之和的算法。 提示思路:从1 到n,依次整除3 与7,将能被整除的数求和,最后求和的平 方根。 double fun(int n) { int i,s=0; for (i=1;i< n;i++) /*判断i是否能被3 与7同时整除*/ if (i%3==0 && i%7==0) s=s+i; return (sqrt(s)); } |