1、国家二级 C语言机试(操作题)模拟试卷 191及答案与解析 一、程序填空题 1 函数 fun的功能是:计算 的前 n项之和。若 x=2 5, n=15时,函数值为: 1 917914。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 !#include#includedouble fun(double x, int n)double f, t; int i ;*foLlrld* f=_1_; t=-1; for(i=1; i 二、程序修改题 2 给定程序 MODI1 C中函数
2、fun的功能是:计算 S所指字符串中含有 t所指字符串的数目,并作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #include #define N 80 int fun(char*s, char*t) int n; char*p, *r; n=0; while (*s) p=s; *found* r=p; while(*r) if(*r=*p) r+, p+; else break; *found* if(*r=0) n+; s+; return n; main() cha
3、r aN, bN; int m; printf(“ nPlease enter string a: “); get: s(a); print: f(“ nPlease enter substring b: “); gets(b); m=fun(a, b); printf(“ nThe result is: m= d n“, m); 三、程序设计题 3 函数 fun的功能是:将 a、 b中的两个两位正整数合并形成一个新的整数放在 C中。合并的方式是:将 a中的十位和个位数依次放在变量 c的千位和十位上, b中的十位和个位数依次放在变量 c的个位和百位上。 例如,当 a=45, b=12。调用该函
4、数后, c=4251。 注意:部分源程序存在文件 PROGl C中。数据文件 IN DAT中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include void fun(int a, int b, long*c) void NONO() +本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*rf, *wf ; int i, a, b; long c; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0 ; i10; i+) fsca
5、nf(rf, “ d, d“, a, b); fun(a, b, c); fprintf(wf, “a= d, b= d, c= 1d n“, a, b, c); fclose(rf); fclose(wf); msin() int a, b; long c; void NONO(); printf(”Input a, b: ”); scanf(” d d”, a, b); fun(a, b, c); printf(“The result is: 1d n“, c); NONO(); 国家二级 C语言机试(操作题)模拟试卷 191答案与解析 一、程序填空题 1 【正确答案】 (1)1 (2)一
6、 1 (3)t 【试题解析】 第一空:由 “return f; ”可知 f是级数和,由审题分析可知,级数从第二项开始规律变化,因此循环从第二项开始计算, 故 f初始化应为第一项的值,故第一空应为 “1”。 第二空:由审题分析可知,级数的后一项在前一项的基础上乘以 (-1)*x,除以n,故第二空处应为 “-1”。 第三空: t是级数项, f把各个级数项累加起来,故第三空处应为 “t”。 二、程序修改题 2 【正确答案】 (1)r=t ; (2)if(*r=0) 【试题解析】 (1)根据 “while(*r)if(*r=*p)r+; p+; ”可知该循环是比较 r和p指向的字符串是否相等,本题的要
7、求是计算字符串中含有某子串的数目, p指向的 源字符串 s,所以 r应指向的是字符串 t,故第一标识下应改成 “r=t: ”。 (2)根据题意第二标识下 “if(*r=0)”应该是判断 r是否指向字符串尾,在 C语言中,等于是用 “=”标识,因此第二标识下应改成 “if(*r=0)”。 三、程序设计题 3 【正确答案】 *c=(a 10)*1000+(b 10)*100+(a 10)*10+(b 10); 【试题解析】 (1)分解两位数的正整数 n的个位和十位数,可用 n 10和 n 10实现。 (2)设 x0、 x1、 x2、 x3为一位数,则 x0、 x110、 x2100、 x31000,可以分别使 x0、 x1、 x2、 x3构成个、十、百、下带权数,而 x0+x110+x2100+x31000构成四位数。本题最多只考虑四位数。