阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。
【说明 1】
函数 f(double eps) 的功能是:利用公式

计算并返回 π 的近似值。
【C 函数 1】
double f(double eps)
{
double n = 1.0,s = 1.0,term = 1.0 ,pi = 0.0 ;
while ( fabs(term) >= eps ) {
pi = pi + term;
n = (1) ; s = (2) ;
term = s / n ;
}
return pi*4;
}
【说明 2】
函数fun(char *str)的功能是:自左至右顺序取出非空字符串 str中的数字字符,形成一个十进制整数(最多 8 位)。例如,若 str中的字符串为 "iyt?67kp f3g8d5.j4ia2e3p12", 则函数返回值为 67385423。
【C 函数 2】
long fun(char *str)
{
int i = 0;
long num = 0;
char *p = str;
while ( i<8 && (3) ) {
if ( *p >= '0' && *p <= '9' ) {
num = (4) +*p-‘0';
++i;
}
(5) ;
}
return num;
}
正确答案及解析
正确答案
解析
(1)n+2
(2)-s 或-1*s
(3) *p!= ' \ 0'或等价形式
(4) num*10 或等价形式
(5) p++或等价形式
本题考查 C 语言程序设计基本技能。考生需认真阅读题目中的说明,从而确定代码的运算逻辑,在阅读代码时,还需注意各变量的作用。
函数f(double eps) 的功能是计算 π 的近似值。观察题中给出的计算公式,可知在循环中n每次递增2,因此空(1)处应填入"n+2"。由于公式中的各项是正负交替的,因此结合表达式 "term = s / n"可知变量 s 就是起此作用的。空 (2) 处应填入" -s"或"-1*s"。
对于函数 fun(char *str),从字符序列中取出数字并组合为一个整数时,对于每个数字,只需将之前获取的部分乘以10再加上该数字的值即可。
以 67385423 为例。
67385423 = (((((((0+6)*10+7)*10+3)* 10+8)*10+5)*10+4)*10+2)*10+3
函数中的变量 i是用来计算位数的, num 用来计算所获得的整数值。显然,最多读取字符序列中的前 8 个数字,或者到达字符序列的末尾(*p!= ' \ 0')时,计算也需结束。因此,空(3)处应填入“ (*p!= ' \ 0')”。
根据 num 的作用,空 (4) 处应填入 "num*10"。
根据指针 p 的作用,空 (5) 处的代码应使得 p 指向下一个字符,因此应填入 "p++"。





