PUERTA | PUERTA CS 2019 | Pregunta 35

Considere el siguiente programa en C:

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

¿Cuál de los siguientes ocurrirá cuando se llame a la función convertir con cualquier número entero positivo n como argumento?
(A) Imprimirá la representación binaria de n en el orden inverso y terminará.
(B) Imprimirá la representación binaria de n pero no terminará
(C) No imprimirá nada y no terminará.
(D) Imprimirá la representación binaria de n y terminará.

Respuesta: (C)
Explicación: Dado que n es el número entero, entonces 1/2 = 0.5 = 0 regresará debido al número entero.

0/2 = 0 causará un bucle infinito porque no hay una condición de terminación para 0.

Entonces, la opción (C) es correcta.

Nota:
Imprimirá la representación binaria de n y terminará, solo si la condición es «si (n <= 0)».

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

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *