【真题1】 请补充main 函数,该函数的功能是:计算三名学生学科的平均成绩。 例如,当score[N][M]={{83.5,82,86,65,67},{80,91.5,84, 99,95},{90,95,86,95,97}}时,五门学科的平均分为:84.5 89.5 85.3 86.3 86.3。 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在main 函数的横线上填入所编 写的若干表达式或语句。 试题程序: #include< stdio.h >#define N 3 #define M 5 main() { int i,j; static float score[N][M]= {{83.5,82,86, 65,67},{80,91.5,84,99,95}, {90,95,86,95,97}}; static float bb[N]; clrscr(); for(i=0;i< M;i++) bb[i]=0.0; for(i=0;i< 【1】;i++) { for(j=0;j< 【2】;j++) bb[j]+=score[i][j]; } for(i=0;i< M;i++) printf("\nsubject%d\taverage=%5.1f", i+1,【3】); return 0; } (2011年2月) 解析: 填空1:由循环体中的score[i][j]可以推断出,变量i的取值范围是从 0 到N-1。填空2:由循环体中的score[i][j]也可以推断出,变量j的取值范 围是从0 到M-1。填空3:各科的平均分等于各科的总分除以学生人数,此时 数组bb中保存的是各科的总分,所以要除以N得到各科的平均分。 答案:【1】N 【2】M 【3】bb[i]/N 【真题2】 下列给定程序中函数fun()的功能是:将长整型数中每一位上为偶数的数 依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如当s 中的数 为25846513 时,t 中的数为6482。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include < stdio.h >#include < conio.h >void fun(long s,long *t) {int d; long s1=1,i=1; *t=0; while(s/i >0) i=i*10; i=i/10; while(s >0) { d=s/i; /**********************found***********************/ if(d%2!=0) { /**********************found***********************/ t=d*s1+t; s1*=10; } s=s%i; i=i/10; } } main() {long s, t; clrscr(); printf("\nPlease enter s: "); scanf("%ld",&s); fun(s,&t); printf("The result is :%ld\n",t); } (2011年2月) 解析: (1)错误:if(d%2!=0) 正确:if(d%2==0) (2)错误:t=d*s1+t; 正确:*t=d*s1+*t; 错误1:偶数是能被2整除,而奇数是不能被2 整除,题目要求找出偶数。 错误2:t为指针类型,所以进行运算时要加'*'号。 【真题3】 请编写函数fun(),其功能是:将s所指字符串中下标为奇数的字符删 除,串中剩余字符形成的新串放在t所指数组中。 例如,当s 所指字符串中的内容为siegAHdied,则在t 所指数组中的内容应是 seAde。 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编 写的若干语句。 试题程序: #include< conio.h >#include< stdio.h >#include< string.h >void fun(char *s,char t[]) {……} main() { char s[100],t[100]; clrscr(); printf("\nPlease enter string S: "); scanf("%s",s); fun(s,t); printf("\nThe result is:%s\n ",t); } (2011年2月) 解析: void fun(char *s,char t[]) { int i,j=0,k=strlen(s); /*k 为字符串的长度*/ for(i=0;i< k;i=i+2) /*将s 所指字符串中下标为偶数的字符存入t所指字符 串中*/ t[j++]=s[i]; t[j]='\0'; /*在字符串最后加上结束标志*/ } 本题使用了一种i永远是偶数的循环方法,即for(i=0;i< k;i=i+2),因为开始 时i的值为0,当i+2 循环时,此值永远是偶数。 |