📜  门| GATE CS 2019 |简体中文第35章

📅  最后修改于: 2021-06-29 01:36:33             🧑  作者: Mango

考虑下面的C程序:

void convert(int n) {
  if (n < 0)
    printf(“ % d”, n);
  else {
    convert(n / 2);
    printf(“ % d”, n % 2);
  }
}

当使用任何正整数n作为参数调用函数convert时,将发生以下哪种情况?
(A)将以相反的顺序打印n的二进制表示形式并终止。
(B)它将打印n的二进制表示形式,但不会终止
(C)它不会打印任何内容,也不会终止。
(D)将打印n的二进制表示形式并终止。答案: (C)
说明:由于n是整数,因此因整数而返回1/2 = 0.5 = 0。

0/2 = 0将导致无限循环,因为0没有终止条件。

因此,选项(C)是正确的。

笔记:
仅当条件为“ if(n <= 0)”时,才会打印n的二进制表示形式并终止。

#include 
  
void convert(int n) {
  
  if(n <= 0)
  printf("%d", n);
    
  else {
  convert(n / 2);
  printf("%d", n%2);
  };
}
  
int main() {
 convert (16);
}

这个问题的测验