阅读以下说明和C函数,填补函数代码中的空缺。 【说明1】 函数f(double eps)的功能是:利用公式计算并返回π的近似值。 double f(double eps) { double n一1一0, s = 1

admin2016-09-08  34

问题 阅读以下说明和C函数,填补函数代码中的空缺。
【说明1】
函数f(double eps)的功能是:利用公式计算并返回π的近似值。
      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 f398d5.j4ia2e3p12”,则函数返回值为67385423。
I: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++”。
转载请注明原文地址:https://kaotiyun.com/show/f9jZ777K
0

最新回复(0)