1、国家二级 C语言机试(操作题)模拟试卷 49及答案与解析 一、程序填空题 1 函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0 9,则 0转换成 9, 1转换成 8, 2转换成 7, , 9转换成 0;若是其他字符则保持不变;并将转换后的结果作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKI C中。 不得增行或删行,也不得更改程序的结构 ! #include /*found*/ _1_ fun(char ch) /*found*/ if (ch=0 _2_ ) /*found*/ retur
2、n 9一 (ch一 _3_ ); return ch; main() char c1, c2; printf(“ nThe result: n”); c1=2; c2=fun(c1); printf(“c1= c c2= c n”, c1, c2); c1=8; c2=fun(c1); printf(“c1= c c2= c n”, c1, c2); cl=a; c2=fun(c1); printf(“c1= c c2= c n”, c1, c2); 二、程序修改题 2 给定程序 MODll C中函数 fun的功能是:用选择法对数组中的 n个元素按从小到大的顺序进行排序。 请修改程序中的错误,
3、使它能得出正确的结果。 注意:不要改动 main函数,不得增行和删行,也不得更改程序的结构 ! #include #define N 20 void fun(int a, int n) int i, j, t, P; for(j=0; j float fun(float *a, int n) main() float Score30=90 5, 72, 80, 61 5, 55), aver; void NONO(); aver=fun(S core, 5); printf(“ nAverage score is: 5 2f n”, aver); NONO(); VOid NONO() ( *
4、本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE *fp,。 wf; int i,j; float aver, score5; fP=fopen(“in dat”, “r”); wf=fopen(“out dat”, “W”); for(i=0; i=0且 ch=9,故第二空处应为 ch=9。 第三空:数字字符转换规则是: 0转换成 9, 1转换成 8, 2转换成7, , 9转换成 0,即返回值为 9一 (ch-0),故第三空处应为 “0”。 二、程序修改题 2 【正确答案】 (1)p=j; (2)p=i; 【试题解析】 程序利用选择法实现数组中的 n个元素从小到大的
5、排序。 (1)第一个标识下面 “p=j”根据 C语言的语法,不难发现语句结束缺少分号,因此改为 “p=j; ”。 (2)第二个标识下面的 “p=j; ”上两句是以 i作为循环和判断条件,其中语句“for(i=j; in; i+)”和 “if(aiap)”是将第 p个元素与剩下的所有元素从第 j个以后到最后一个进行循环比较,所以改为 “p=i: ”。 三、程序设计题 3 【正确答案】 int i ; float ave=0 0; for(i=0; in; i+)ave=ave+ai; ave=ave n ; return ave; 【试题解析】 该程序功能是计算 n门课程的平均分,求解过程首先统计 n门课的总分,然后根据总分求得平均分。 解题思路 (1)在函数中首先定义平均分的变量,并将其初始化值置为 0。 (2)然后在 for循环中,求得所有成绩的总分,并在总分的基础上求得平均分。