📜  门| GATE CS 2019 |第 35 题

📅  最后修改于: 2021-09-25 07:28:39             🧑  作者: 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)是正确的。

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

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

这个问题的测验