1、国家二级( C语言)机试模拟试卷 340及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:统计形参 s所指字符串中数字字符出现的次数,并存放在形参 t所指的变量中,最后在主函数中输出。例如,形参 s所指的字符串为: abcdcf35adgh3kjsdf7。输出结果为: 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意;源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include void fun(char *s, int *t) int i, n; n=0; /*found*/ fo
2、r(i=0; 【 1】 !=0; i+) /*found*/ if(si=0 long c; void NONO (); printf(“Input a, b:“); scanf(“%d,%d“, fun(a, b, printf(“The result is: %ldn“, c); NONO(); void NONO () /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(“in.dat“, “r“); wf = fopen(“out.dat“,“w“); for(i =
3、 0 ; i =0且 si=9,故第二空处应为 “9”。 第三空:这里是将数字字符出现的次数存放在形参 t里, n记录了数字字符的个数,而形参 t是指针变量,故第三处应为 “*t=n”。 二、程序修改题( 30分) 2 【正确答案】 int fun(int n) if(n=1) 【试题解析】 ( 1)定义函数 fun时,形参 n并没有指定参数类型,因此, “int fun(n)”改为 “int fun(int n)”。 ( 2)根据题目要求,原题中的 “if(n=1)”应该是用于判断 n是否等于 1,但是被错误表示成赋值表达式。因此, “if(n=1)”应该改为 “if(n=1)”。 三、程序设计题( 40分) 3 【正确答案】 *c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10; 【试题解析】 ( 1)分解两位数的正整数 n的个位和十位数,可用 n%10和 n/10实现。 ( 2)设 x0、 x1、 x2、 x3为一位数,则 x0、 x110、 x2100、 x31000,可以分别使 x0、 x1、 x2、 x3构成个、十、百、千带权数,而 x0+x110+x2100+x31000构成四位数。本题最多只考虑四位数。