[计算机类试卷]国家二级C语言机试(操作题)模拟试卷81及答案与解析.doc
国家二级 C语言机试(操作题)模拟试卷 81及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是将形参 n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。 例如,从主函数输入一个整数 27638496,函数返回值为 26846。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 include unsignect long fununsigned long n unsicjned long x0, s, i; int t; sn; /**********found**********/ i _____1_____ ; /**********found**********/ while_____2_____ ts 10; ift 20 /************found************/ xxt*i; i _____3_____ ; ss/10; return x; main unsigned long n一 1 ; whilen99999999 | | n define M 5 /************found************/ int funint n, int XX int i, j, sum0 ; printf“nqhe d x d matrix n“, M, 1; fori0; i void funint a, int b, long*c void NONO /*本函数用于打开文件,输入数据,调用 函数,输出数据,关闭文件。 */ FTLE*rf, *wf; int i, a, b; long c; rf“in dat“, “r“; wf“out dat“, “w“; fori0; i10 ; i fscanfrf, “ d, d“, a, b; funa, b, c; fprintfwf, “a d, b d, c ldn“, a, b, c; fcloserf; fclosewf; main int a, b; long C; void NONO; print f“ a, b “; scanf” d d”, a, b; funa, b, c; printf“The result is ldn“, c; NONO; 国家二级 C语言机试(操作题)模拟试卷 81答案与解析 一、程序填空题 1 【正确答案】 11 2s 3i*10 【试题解析】 函数 fun的功能是将形参 n中,各位上为偶数的数取出,组成新数。 第一空由 “ift 20xxt*i i_____3_____; ”可知,如果 t是偶数,那么t添加到返 回值里面,比如第一次得到 t2,那么 x02*1;下一次得到了 t4,那么此时 x的值应该是 22*10;再下一次得到 t2,那么 x222*100,即 x的值是在上一次值的基础上加上新得到的值乘以其权值,因此 i是代表权值。第一空处是初始化 i,第一次进入 if语句时, x是个 1位数,此时权值 i应为 1,故第一空处应为 “1”。 第二空第二空处是填循环的终止条件,在循环体内, s每次缩小 10倍,在最后一次进入循环的时候, s是一个一位数, s/10之后 s变成 0,下次就不应该进入while循环,因此 while循环的终止条件 是 s不为 0,故第二空处为 “s”或 “s0”。 第三空由第一空的分析可知权值 i是在上一次的基础上增加 10倍,故第三空处应为 “i*10”。 二、程序修改题 2 【正确答案】 1int funint n, int XXM 2printf“ 4d“, xxij; 【试题解析】 函数的功能是求两条对角线上各元素之和。 1第一个标识下 fun函数的定义中对于二二维数组的定义在原题中并没有给出空间,所以将 “int funint n,int xx”改为 “int funint n,intxxM”。 2fun函数中 n是 int型, C语言输出语句中整型应该是 d,所以第二个标识下“ printf“ f“, xxij; ”应该改为 “printf“ 4d“,xxij; ”。 三、程序设计题 3 【正确答案】 *ca/10*1000b 10*100a 10*10b/10; 【试题解析】 1分解两位数的正整数 n的个位和十位数,可用 n 10和 n/10实现。 2设 x0、 x1、 x2、 x3为一位数,则 x0、 x110、 x2100、 x31000,可以分别使x0、 x1、 x2、 x3构成个、十、百、千带权数,而 x0x110x2100x31000构成四位数。本题最多只考虑四位数。