1、国家二级 C语言机试(操作题)模拟试卷 566及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:在形参 s所指字符串中寻找与参数 c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若 s所指字符串为 “baacda”, c中的字符为 a,执行后 s所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(char*s, char C) int i, j
2、, n; *found* for(i=0; si!=【 1】 ; i+) if(si=C) *found* n=【 2】 ; while(si+1+n!= 0) n+; for(j=i+n+1; j i; j一一 ) sj+1=sj; *found* sj+1=【 3】 ; i=i+1; main() ( char S80=“baacda“, c; printf(“knThe string: skn“, s); printf(“knInput a character: “); Scanf(“ c“, &c); fun(s, c); printf(“ nThe result is: s n“,
3、s); 二、程序修改题 2 在主函数中从键盘输入若干个数放入数组中,用 0结束输入并放在最后一个元素中。 下列给定程序中,函数 fun的功能是:计算数组元素中所有值为正数的平均值 (不包括 0)。 例如,数组中元素的值依次为: 39、一 47、 21、 2、一 8、 15、 0,则程序的运行结果为 19 250000。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #include stdio h double fun(int x) *found* int sum=0 0; in
4、t c=0, i=0; while(xi!=0) if(xi 0) sum+=xi; c+; i+; *found* sum =c; return sum; main() int x1000; int i=0; printf(“ nPlease enter some dat a(end with 0): “); do scanf(“ d“, xi); while(Xi+!=0); printf(“ if n“, fun(x); 三、程序设计题 3 编写函数 fun,其功能是:根据以下公式计算 S,并将计算结果作为函数值返回, n通过形参传入。 例如,若 n的值为 11时,函数的值为 1 833
5、333。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdlib h #include conio h #include stdio h #include string h float fun(int n)void main() int n; float s; system(“CLS“); printf(“ nPlease enter N: “); scanf(“ d“, &n); s=fun(n); printf f“The result is: fn“, s); 国家二级 C语言
6、机试(操作题)模拟试卷 566答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)0 (3)c 【试题解析】 填空 1: for语句循环条件是判断是否到达字符串结尾,即当前字符是否为 0。 填空 2: while语句用以确定字符串的长度,所以变量 n赋初值为 0。 填空 3:题目要求如果找到与参数 c相同的字符,就在后面插入一个相同的字符,且找到 后应该给数组元素赋值,本题目给出参数为 c。 二、程序修改题 2 【正确答案】 (1)double sum=0 0; (2)sum =c; 【试题解析】 (1)变量定义错误,变量 sum存放所有数据的和,应定义为 double型。 (2)c
7、语言中的除法运算符是 “ ”。 三、程序设计题 3 【正确答案】 float fun(int n) int i, s1=0; float s=0 0; for。 (i=1; i =n; i+) s1=s1+i; *求每一项的分母 * s=s+1 0 s1; *求多项式的值 * return s; 【试题解析】 此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。 本题中表达式的规律是 1+2+n 的倒数之和,那么可以通过 for循环语句来实现第 1项到第 n项的变化。其实就是累加算法,方法是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,因为该变量的作用是累加器,所以初始值应为 0(或 0 0,根据变量数据类型来确定 ),再通过 for循环语句来完成累加过程。 本题中 s1用来表示每一项的分母,每一 项的分母都是由前一项分母加项数。注意,由于 s1定义成一个整型,所以在 s=s+1 0 s1语句中不能把 1 0写成 1。