1、国家二级 C语言机试(操作题)模拟试卷 75及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:统计形参 s所指字符串中数字字符出现的次数,并存放在形参 t所指的变量中,最后在主函数中输出。例如,形参 S所指的字符串为: abcdef35adgh3kjsdf7。输出结果为: 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #irlClude void fun(char*s, int*t) int i, n; n=0: /*found*/ for(i=0
2、; _1_ 1=0; i+) /*found*/ if(Si=0&Si int fun(int*x, int y) int t ; /*found*/ t=x; x=y; /*found*/ return(y); main() int a=3, b=8 ; printf(“ d dn“, a, b); b=fun(&a, b); printf(“ d dn“, a, b); 三、程序设计题 3 请编写函数 fun,它的功能是:求出 1到 1000之间能被 7或 11整除、但不能同时被 7和 11整除的所有整数并将它们放在 a所指的数组中,通过 n返回这些数的个数。 注意:部分源程序在文件 PR
3、OG1 C中。 请勿改动主函数 main和其他函数中的仟何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include void fun(int*a, int*n) main() int aa1000, n, k; void NONO(); fun(aa, &n); for(k=0 ; k=0且 si=0且si=9,故第二空处应为 “9”。第三空:这里是将数字字符出现的次数存放在形参 t里, n记录了数字字符的个数,而形参 t是指针变量,故第三处应为 “*t=n”。 二、程序修改题 2 【正确答案】 (1)t=*x; *x=y; (2)return(t); 【试题解析】 (1)根据
4、 fun中 x变量的定义, x为指针型变量,所以第一个错误标识下的 “t=x; x=y; ”改为 “t=*x; *x=y; ”。 (2)交换之后 t中存放原来 x的值, x存放原来 y的值,这里应该是返回原来 x的值,所以第二个标识下的 “return(y); ”应该改为 “return(t); ”或者 “return t; ”。 三、程序设计题 3 【正确答案】 int i; *n=0; for(i=7 ; i1000; i+) if(i 7)=0 |(i 11)=0)&(i 77)!=0) a(*n)+=i; 【试题解析】 进入 fun函数,判断是否被 7整除一判断是否被 11整 除一并且不被 77整除一按要求返回计算结果,首先, *n置 0,设置为累计器,计算符合条件的数的个数。然后,通过循环,判断小于 1000的每一个整数是否符合题干中的要求。其中的判断条件能否被 7或者被 11整除为 i 7=0|i 11=0,不能被 11和 7同时整除为 i 77!=0,它们之间的并关系就用 &连接,最后结果即为 (i7=0|i 11=0)&i 77 !=0。最后,将符合条件的整数存入数组 a中,同时对 *cn进行自加,返回结果。