中国大学慕课第7周测验

1 单选(1分)

写出下面程序的运行结果

#include <stdio.h>

void Bin(int x)

{     

    if (x/2 > 0) Bin(x/2);

    printf("%d\n", x%2);

}

int main()

{    Bin(12);

      return 0;

}

  • A. 1

        1

        0 

        0

  • B. 0

        0

        1

        1

  • C. 6

        3

        1

        0

  • D. 6

        3

        1

        1

    答案:A

2 单选(1分)

​下面程序是用辗转相除法计算两个正整数的最大公约数递归求解方法。请将程序补充完整。

提示:辗转相除法的基本思路是,对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。设r=a mod b表示a除以b的余数,若r≠0,则将b作为新的a,r作为新的b,重复a mod b运算,直到r=0时为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:Gcd(50, 15)=Gcd(15, 5)=Gcd(5, 0)=5。

int Gcd(int a, int b)

{     if (a%b == 0)   return b;

      else         return ____________________;

}

  • A. Gcd(b, a%b)
  • B. Gcd(b%a, a)
  • C. Gcd(a, b%a)
  • D. Gcd(a%b, b)
  • 答案:A
3 单选(1分)

‌请给出程序的运行结果。

#include <stdio.h>

int Fun(int m)

{       

    static int n = 0;

    m /= 2;

    m = m * 2;

    if (m)  

     { 

        n *= m;

        return(Fun(m - 2));

    }

    else 

        return n;

}

int main()

{   

    int a, i;

    for (i = 0; i < 2; i++)

    {       

          a = Fun(4 + i);

        printf("%d\n", a);

    }

    return 0;

}

  • A. 64

        64

  • B. 4

        4

  • C. 0

        0

  • D. 8

        8

    答案:C

4 单选(1分)

‎根据最大公约数的如下3条性质,采用递归法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两正整数最大公约数
性质1  如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)
性质2  如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)
性质3  如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b
代码如下,请补充程序中缺少的内容。

#include <stdio.h>

int Gcd(int a, int b);

int main()

{     

   int a, b, c; 

   printf("Input a,b:");

   scanf("%d,%d", &a, &b);

   c = Gcd(a, b);

   if (_________)      printf("Greatest Common Divisor of %d and %d is %d\n", a, b, c);    else              

       printf("Input number should be positive!\n");

    return 0;

}

int Gcd(int a, int b) 

{     

     if (_______________)        return -1;

     if (a == b)           return __________;      else if (a > b)           return __________;      else                   return ___________;  

}

  • A. 第9行:  c!= -1

    第18行:  a <= 0 || b <= 0

    第21行:  a
    第23行: Gcd(a - b, b)

    第25行: Gcd(a, b - a)

  • B. 第9行:  c== -1

    第18行:  a <= 0 || b <= 0

    第21行: a
    第23行: Gcd(a, b - a)

    第25行: Gcd(a - b, b)

  • C. 第9行:  c== -1

    第18行:  a <= 0 && b <= 0

    第21行: a
    第23行: Gcd(a - b, b)

    第25行: Gcd(a, b - a)

  • D. 第9行:  c!= -1

    第18行:  a <= 0 && b <= 0

    第21行: b
    第23行: Gcd(a, b - a)

    第25行: Gcd(a - b, b)

    答案:A

5 单选(1分)

Y()是实现n层嵌套平方根计算的函数,其公式如下,请将程序补充完整。

 

double Y(double x, int n)

{    if (n == 0)

         return 0;                                  else    

          return (square(x +___________________)); 

}

  • A. Y(x,n-1)
  • B. Y(x,1)
  • C. Y(x,n+1)
  • D. Y(x,n)
  • 答案:A
     
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值