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.
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