阅读以下说明和 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++"。
你可能感兴趣的试题
一台主机的IP地址为202.123.25.36,掩码为255.255.254.0。如果该主机需要在该网络进行直接广播,那么它应该使用的目的地址为( )
-
- A.202.123.25.0
- B.202.123.25.255
- C.202.123.24.0
- D.202.123.24.255
- 查看答案
在计算机系统的日常维护工作中,应当注意硬盘工作时不能__(2)__。另外,需要防范病毒,而__(3)__是不会被病毒感觉的。
-
- A.电子邮件
- B.硬盘
- C.U盘
- D.ROM
- 查看答案
有 4 个 IP 地址:201.117.15.254、201.117.17.01、201.117.24.5 和 201.117.29.3,如果子网掩码为 255.255.248.0,则这 4 个地址分别属于3个子网;其中属于同一个子网的是()
-
- A.201.117.15.254 和 201.117.17.01
- B.201.117.17.01 和 201.117.24.5
- C.201.117.15.254 和 201.117.29.3
- D.201.117.24.5 和 201.117.29.3
- 查看答案
在异步通信中,每个字符包含1位起始位、7位数据位、1位奇偶位和1位终止位,每秒钟传送200个字符,采用4相位调制,则码元速率为()。
-
- A.50波特
- B.500波特
- C.550波特
- D.1000波特
- 查看答案
在 Windows 中,运行( )命令得到下图所示结果。以下关于该结果的叙述中,错误的是( )。
Pinging 59.74.111.8 with 32 bytes of data:
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Ping statistics for 59.74.111.8:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 5ms, Average = 4ms
-
- A.该命令使得本地主机向目标主机发送了 4 个数据包
- B.本地主机成功收到了目标主机返回的 4 个数据包
- C.本地主机与目标主机连接正常
- D.该命令用于查看目标主机的 IP 地址
- 查看答案