国家二级C语言机试(操作题)模拟试卷327
程序填空题
1.给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参S所指的字符串为abs5defl26jkm8,程序执行后的输出结果为22。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int fun(char*S)
{ int sum=0;
while(*s){
/*********found*********/
if(isdigit(*s))
sum+=*s-【1】;
/*********found*********/
【2】;
}
/*********found*********/
return【3】;
}
main()
{ char s[81];int n;
printf(\\
(1)48或’0’
(2)s++
(3)sum
解析:本题是把字符串中是数字字符转换成对应的数值并进行累加。
填空1:’0’字符对应的ASCII码值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填48或者’0’。
填空2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填s++。
填空3:返回累加和sum,所以应填sum。
程序修改题
2.下列给定程序中函数fun的功能是:根据整型形参m,计算如下公式的值:
(1)for(i=2;i<=m;i++)
(2)y+=1.0/(i*i);或y+=(double)1/(i*i);
解析:(1)根据公式可以知道for循环语句中变量i的取值范围应该包括m。
(2)变量y是一个double型变量,而i是整型变量,所以要进行类型转换,改为y+=1.0/(j*i);或y+=(dollble)l/(i*i);。
程序设计题
3.编写函数fun,其功能是:根据以下公式求百的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
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,因为循环变量从第二项开始累加。
本文档预览:3600字符,共2053字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载