1、二级 C语言机试-147 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充 main函数,该函数的功能是:从键盘输入学生的成绩(用回车键作为分隔符),并统计各分数段学生的人数。具体要求为:A 类为 90100 分,B 类为 8089 分,C 类为 7079 分,D 类为 6069 分,59分以下的为 E类。当成绩为 0时结束成绩的输入,并且最后输入的 0不进行统计。例如,输入 89,99,45,64,56,78,88,74,66,55,0。结果为A:1 B:2 C:2 D:2 E:3注意:部分源程序给出如下。请勿改动主函数 main和其
2、他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.h#includeconio.h#define N 100main()float scoreN;int bb5;int grade, i=-1,n=0;char ch=A;clrscr();printf(“Input a score(0100);/n“);doi+;n+;printf(“score%d=“,i);scanf ( 【1】 );while (scorei!=0);for(i=0;i5;i+)【2】 ;for(i=0;in-1;i+)grade= 【3】 ;switch
3、(grade)case 10:case 9:bb0+;break;case 8:bb1+;break;case 7:bb2+;break;case 6:bb3+; break;default:bb4+;for(i=0;i5;i+)printf(“/n%c:%d“,ch+i,bbi);(分数:30.00)填空项 1:_二、改错题(总题数:1,分数:30.00)2.假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数 fun()的功能是:删除数列中值为 X的元素。 N 中存放的是数列中元素的个数。请改正程序中的错误,使它能够得出正确的结果。注意:不要改动 main函数,不得增行或删行,
4、也不得更改程序的结构。试题程序:#includestdio.h#define N 20fun (int *a,int n,int x)int p=0,i;an=x;while (x!=ap)p=p+1;if(p=n) return -1;elsefor (i=p;in;i+)/*found*/ai+1=ai;return n-1;main()int wN=-3,0,1,5,7,99,10,15,30,90,x,n,i;n=10;printf(“The original data :/n“);for (i=0;in;i+) printf(“%5d“,wi);printf(“/nInput x (
5、to delete ): “);scanf(“%d“,printf(“Delete : %d/n“,x);n=fun(w,n,x);if (n=-1) printf(“*No be found!*/n/n“);elseprintf(“The data after deleted:/n“);for (i=0;in;i+) printf(“%5d“,wi);printf(“/n/n“);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)3.请编写函数 fun(),它的功能是:求出 1到 1000之内能被 7或 11整除、但不能同时被 7和 11整除的所有整数并将它们放在
6、a 所指的数组中,通过 n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#include conio.h#include stdio.hvoid fun (int *a,int *n)main()int aa1000, n, k;clrscr();fun(aa,for(k=0;kn;k+)if(k+1)%10=0)printf(“%5d“,aak);printf(“/n“); /*一行写 9个数*/elseprintf(“%5d “,aak);(分数:40.00)_二级 C语言机试-147
7、答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充 main函数,该函数的功能是:从键盘输入学生的成绩(用回车键作为分隔符),并统计各分数段学生的人数。具体要求为:A 类为 90100 分,B 类为 8089 分,C 类为 7079 分,D 类为 6069 分,59分以下的为 E类。当成绩为 0时结束成绩的输入,并且最后输入的 0不进行统计。例如,输入 89,99,45,64,56,78,88,74,66,55,0。结果为A:1 B:2 C:2 D:2 E:3注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在 m
8、ain 函数的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.h#includeconio.h#define N 100main()float scoreN;int bb5;int grade, i=-1,n=0;char ch=A;clrscr();printf(“Input a score(0100);/n“);doi+;n+;printf(“score%d=“,i);scanf ( 【1】 );while (scorei!=0);for(i=0;i5;i+)【2】 ;for(i=0;in-1;i+)grade= 【3】 ;switch(grade)case 10
9、:case 9:bb0+;break;case 8:bb1+;break;case 7:bb2+;break;case 6:bb3+; break;default:bb4+;for(i=0;i5;i+)printf(“/n%c:%d“,ch+i,bbi);(分数:30.00)填空项 1:_ (正确答案:1 “%f“,an=x;while (x!=ap)p=p+1;if(p=n) return -1;elsefor (i=p;in;i+)/*found*/ai+1=ai;return n-1;main()int wN=-3,0,1,5,7,99,10,15,30,90,x,n,i;n=10;pr
10、intf(“The original data :/n“);for (i=0;in;i+) printf(“%5d“,wi);printf(“/nInput x (to delete ): “);scanf(“%d“,printf(“Delete : %d/n“,x);n=fun(w,n,x);if (n=-1) printf(“*No be found!*/n/n“);elseprintf(“The data after deleted:/n“);for (i=0;in;i+) printf(“%5d“,wi);printf(“/n/n“);(分数:30.00)填空项 1:_ (正确答案:错
11、误:ai+1=ai; 正确:ai=ai+1;)解析:解析 上机改错题有一个优势,就是我们可以执行该程序,根据错误的提示再一步一步实现改错的目的,我们先不看程序是什么意思,甚至不用看它在求什么。按 Ctrl+F9快捷键,然后看看屏幕提示。另外,审题时我们必须要注意“不要改动 main()函数,不得增行或减行,也不得更改程序结构”,这样;对我们来说,只要读懂题意,对程序执行部分:int p=0,i;an=x;while (x!=ap)p=p+1;if (p=n) return -1;else for (i=p;in;i+)ai+1=ai;return n-1;逐步分析,再应用平时的常识加以区分,琢
12、磨,相信答案不攻自破,这种考题,按 Ctrl+F9快捷键后,屏幕一般都不会提示错误,否则就显得太儿科了一点,所以,我们并不需要着急去找错误,而是把程序读懂。三、编程题(总题数:1,分数:40.00)3.请编写函数 fun(),它的功能是:求出 1到 1000之内能被 7或 11整除、但不能同时被 7和 11整除的所有整数并将它们放在 a 所指的数组中,通过 n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#include conio.h#include stdio.hvoid fun (in
13、t *a,int *n)main()int aa1000, n, k;clrscr();fun(aa,for(k=0;kn;k+)if(k+1)%10=0)printf(“%5d“,aak);printf(“/n“); /*一行写 9个数*/elseprintf(“%5d “,aak);(分数:40.00)_正确答案:(void fun(int *a, int *n)int i,j=0;for(i=1;i=1000;i+) /*求 1到 1000之内能被 7或 11整除、但不能同时被 7和 11整除的所有整数,并放入数组 a中*/if(i%7=0|i%11=0)*n=j; /*传回满足条件的数的个数*/)解析:解析 注意本题题目应是找出能被 7或 11整除但不能同时被 7和 11整除的所有整数。能同时被7和 11整除的整数一定能被 77整除,且不能被 77整除的数不一定就是能被 7或 11整除的数。所以可得出程序中的 if()。按运算优先级可知 (i%7=0|i%11=0),注意,两边必须要有小括号。