1、国家二级 C语言机试(操作题)模拟试卷 327及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将形参 s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参 S所指的字符串为 abs5defl26jkm8,程序执行后的输出结果为 22。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include string h #include ctype h int fun(char*S
2、) int sum=0; while(*s) *found* if(isdigit(*s) sum+=*s 【 1】 ; *found* 【 2】 ; *found* return【 3】 ; main() char s81; int n; printf(“ nEnter a string: n n“); gets(s); n=fun(s); printf(“ nThe result is: d n n“, n); 二、程序修改题 2 下列给定程序中函数 fun的功能是:根据整型形参 m,计算如下公式的值:例如,若 m的值为 5,则应输出 1 463611。请改正程序中的错误,使它能得出正确的
3、结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 !试题程序: #include conio h #includestdio h double fun(int m) double Y=1 0; int i; *found* for(i=2; i m; i+) *found* y+=1 (i*i); return(y); main() int n=5; printf(“ nThe result is lf n“, fun(n); 三、程序设计题 3 编写函数 fun,其功能是:根据以下公式求百的值 (要求精度 0 0005,即某项小于 0 0005时停止迭代 )。程序运行
4、后,若输入精度 0 0005,则程序应输出为 3 140578。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #include stdio h #include conio h #include math hdouble fun(double eps)void main() double x; printf(“Input eps: “); scanf(“ lf“, x); printf(“ neps= lf, PI= lf n“, x, fun(x); 国家二级 C语言机试(操作题)模拟试卷 327答案与解
5、析 一、程序填空题 1 【正确答案】 (1)48或 0 (2)s+ (3)sum 【试题解析】 本题是把字符串中是数字字符转换成对应的数值并进行累加。 填空 1: 0字符对应的 ASCII码值是 48,因此数字字符转换成对应数值时只要减去 48,即是该数字字符对应的数值,所以应填 48或者 0。 填空 2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填 s+。 填空 3:返回累加和 sum,所以应填 sum。 二、程序修改题 2 【正确答案】 (1)for(i=2; i =m; i+) (2)y+=1 0 (i*i);或 y+=(double)1 (i*i); 【试题解析】 (1)根
6、据公式可以知道 for循环语句中变量 i的取值范围应该包括m。 (2)变量 y是一个 double型变量,而 i是整型变量,所以要进行类型转换,改为y+=1 0 (j*i);或 y+=(dollble)l (i*i);。 三、程序设计题 3 【正确答案】 double fun(double eps) double s=0 0, s1=1 0; int n=1; while(s1 =eps) *当某项大于精度要求时,继续求下一项 * s=s+s1; *求和 * s1=s1*n (2*n+1); *求多项式的每一项 * n+; return 2*s; 【试题解析】 本题考查:迭代法求给定多项式的值。迭代算法是让计算机对一组指令 (或一定步骤 )进行重复执行,在每次执行这组指令 (或这些步骤 )时,都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋 初值操作。 首先应该定义 double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始以后的每一项都是其前面一项乘以 n (2*n+1),程序中用 s1来表示每一项, s表示求和后的结果。需注意 s1和 s的初值都为 1 0,因为循环变量从第二项开始累加。