1、国家二级( C语言)机试模拟试卷 375及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:将形参 n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。 例如,从主函数输入一个整数: 27638496,函数返回值为: 26846。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include unsigned long fun(unsigned long n) unsigned long x=0, s, i
2、; int t; s=n; *found* i= 【 1】; *found* while(【 2】 ) t=s 10; if(t 2=0) *found* x=x+t*i; i=【 3】; s=s 10; return x; main() unsigned long n=一 1; while(n99999999 | n void fun(char p1, char p2) main() char s180, s240; void NONO(); printf(“Enter s1 and s2: n“); Scarlf(“ s s“, s1, s2); printf(“s1= s n“, s1)
3、; printf(“s2= s n“, s2); printf(“Invoke fun(s1, s2): n“); fun(s1, s2); printf(“After invoking: n“); printf(“ s n“, s1); NONO(); void NONO() *本函数用于打开文件,输入测试数据,调 用 fun函数,输出数据,关闭文件。 * int i; FTLE*rf, *wf ; char s180, s240; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i10 ; i+) fscanf(rf,
4、 “ s“, s1); fscanf(rf, “ s“, s2); fun(s1, s2); fprintf(wf, “ s n“, s1); fclose(rf); fclose(wf); 国家二级( C语言)机试模拟试卷 375答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)1 (2)s (3)i*10 【试题解析】 第一 空:由 “if(t 2=0)x=x+-t*i; i=【 3】; “可知,如果 t是偶数,那么 t添加到返回值里面,比如第一次得到 t=2,那么 x=0+2*l;下一次得到了 t=4,那么此时 x的值应该是 2+2*10;再下一次得到 t=2,那么 x=2
5、2+2*100,即 x的值是在上一次值的基础上加上新得到的值乘以其权值,因此 i是代表权值。第一空处是初始化 i,第一次进入 if语句时, x是个 1位数,此时权值 i应为 1,做第一空处应为 “1“, 第二空:第二空处是填循环的终止条件,在循环体内, s每次缩小 10倍,在最后一次进入循环的 时候, s是一个一位数, s 10之后 s变成 0,下次就不应该进入while循环,因此 while循环的终止条件是 s不为 0,故第二空处为 “s“或 “s!=0“。 第三空:由第一空的分析可知权值 i是在上一次的基础上增加 10倍,故第三空处应为 “i*10“。 二、程序修改题( 30分) 2 【正确答案】 (1)错误: int j=1 正确: double j=1.0; (2)错误: y+=1/(i*i); 正确: y+=j/(i*i); 【试题解析】 错误 1:为了做后面的除法运算, j要定义为 实型数,否则除得的结果将为整数。错误 2:题中公式是加减相间的运算,通过来实现。 三、程序设计题( 40分) 3 【正确答案】 char*p=p1; while(*p)p+; while(*p2) *p+= p2+; *p=0; 【试题解析】 (1)先求出串 1的元素个数。 (2)然后把串 2的元素放到串 l最后的位置,依次把串 2中的所有字符全部放到串1之后。