1、国家二级( C语言)机试模拟试卷 235及答案与解析 一、程序填空题( 30分) 1 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:将十进制正整数 m转换成 k(2k9)进制数,并按高位到低位顺序输出。 例如,若输入 8和 2,则应输出 1000(即十进制数 8转换成二进制表示是 1000)。 请改正 fun函数中的错误,使它能得出正确的结果。 注意:不要改动 main函数。不得增行或删行,也不得更改程序的结构 ! #include #include void fun(int m, int k) int aa20, i; for(i=0; m; i+) /*f
2、ound*/ a6tai=m k; m =k, for(; i; i ) /*found*/ printf(“ d“, aai); main() int b; n; printf (“ nPlease enter a numberand a base: n“); scanf(“ d dtt, ”, t是数组名,故 fun函数的参数是指针,因此第一空处应为 “N”。 第二空: “_2_=tij+tji;”是将对称元素相加存放在左下三角元素中,左下三角元素可表示为 tij,故第二空处应为 “tij”。 第三空: “_3_=0;”是将右上三角元素置 0,右上三角元素可表示为 tji,故第三空为 “t
3、ji”。 二、程序修改题( 30分) 2 【正确答案】 (1)aai=m k; (2)printf(“ d“, aai一 1); 【试题解析】 (1)第二个标识下的 “aaim k; “是进制的转换,应该是取余,所以第二个标识下 “aai=m k; “应该改为 -“aai=m k; “。 (2)数制转换处理过程中所得的结果,和实际要输出的结果顺序是相反的,所以必须对存放余数的数组反向输出。原题中 “printf(“ d, aai); “的下标有误。因为下标 i的起始 值为 0,故反向输出时应该从 i-1开始,因此改为 “printf(“ dt“,aai-1); “。 三、程序设计题( 40分) 3 【正确答案】 double proc(int n) int i; double s=0 0; /s是和的变量,因此其初始值为 0 for(i=1; i=n; i+) 从第 1项到第 n项 s=s+(1 0 (2*i一 1)+1 0 (2*i); 根据题目的要求把分子、分母转化为符合题意的类型 return s; 最后把其值返回到主函数 【试题解析】 首先定义一个变量来存放表达式的和,根据题目中提供的多项式,通过 n次循环来求出 n项的和。最后把所求得的和返回到主函数当中。