1、国家二级 C语言机试(操作题)模拟试卷 327及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:将形参 s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参 S所指的字符串为 abs5defl26jkm8,程序执行后的输出结果为22。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKlC 中。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh #includestringh #incl
2、udectypeh int fun(char*S) 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:nn“); gets(s); n=fun(s); printf(“nThe result is:dnn“,n); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中函数 fun的功能是:根据整型形参 m,计算如下公式的值: (分数:2.
3、00)_三、程序设计题(总题数:1,分数:2.00)3.编写函数 fun,其功能是:根据以下公式求百的值(要求精度 00005,即某项小于 00005 时停止迭代)。(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 327答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:将形参 s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参 S所指的字符串为 abs5defl26jkm8,程序执行后的输出结果为22。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出
4、正确的结果。 注意:部分源程序在文件 BLANKlC 中。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh #includestringh #includectypeh int fun(char*S) 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:nn“); gets(s); n=fun(s); printf(“nThe resu
5、lt is:dnn“,n); (分数:2.00)_正确答案:(正确答案:(1)48 或0 (2)s+ (3)sum)解析:解析:本题是把字符串中是数字字符转换成对应的数值并进行累加。 填空 1:0字符对应的ASCII码值是 48,因此数字字符转换成对应数值时只要减去 48,即是该数字字符对应的数值,所以应填48或者0。 填空 2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填 s+。 填空 3:返回累加和 sum,所以应填 sum。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中函数 fun的功能是:根据整型形参 m,计算如下公式的值: (分数:2.00)_正确答案:(
6、正确答案:(1)for(i=2;i=m;i+) (2)y+=10(i*i);或 y+=(double)1(i*i);)解析:解析:(1)根据公式可以知道 for循环语句中变量 i的取值范围应该包括 m。 (2)变量 y是一个double型变量,而 i是整型变量,所以要进行类型转换,改为 y+=10(j*i);或 y+=(dollble)l(i*i);。三、程序设计题(总题数:1,分数:2.00)3.编写函数 fun,其功能是:根据以下公式求百的值(要求精度 00005,即某项小于 00005 时停止迭代)。(分数:2.00)_正确答案:(正确答案:double fun(double eps)
7、double s=00,s1=10; 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的初值都为 10,因为循环变量从第二项开始累加。