PUERTA | Puerta TI 2008 | Pregunta 49

Considere el programa C dado a continuación. ¿Qué imprime?

#include <stdio.h>
int main ()
{
        int i, j;
        int a [8] = {1, 2, 3, 4, 5, 6, 7, 8};
        for(i = 0; i < 3; i++) {
             a[i] = a[i] + 1;
             i++;
        }
        i--;
        for (j = 7; j > 4; j--) {
              int i = j/2;
              a[i] = a[i] - 1;
        }
        printf ("%d, %d", i, a[i]);
}
 /* Add code here. Remove these lines if not writing code */ 

(A) 2, 3
(B) 2, 4
(C) 3, 2
(D) 3, 3

Respuesta: (C)
Explicación: Tenga cuidado con el alcance de i,
hay dos variables nombradas: i, con diferente alcance .

Hay 2 puntos principales a considerar al resolver esta pregunta. Alcance de la variable i y división entera.
Primero, el bucle for se ejecutará para i = 0, 2 y 4, ya que i se incrementa dos veces dentro del bucle y la array resultante será a = 2, 2, 4, 4, 5, 6, 7, 8 (el bucle terminará en i = 4 )
Después de eso, el valor de i es 3, ya que hay una operación de disminución después del bucle for.
El siguiente bucle for se ejecuta para j = 7, 6 y 5 y los valores i correspondientes, que es una variable local dentro del bucle for, serán 3 (7/2), 3 (6/2) y 2 (5/2). La array después de este ciclo for será
a = 2, 2, 3, 2, 5, 6, 7, 8
Después del ciclo for, el valor i actual es 3 y el elemento en a[3] = 2.

Esta solución es aportada por Pranjul Ahuja.

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 *