Considere el siguiente fragmento de código de un programa en C. Suponga que swap(&x, &y) intercambia los contenidos de x e y.
int main() { int array[] = {3, 5, 1, 4, 6, 2}; int done = 0; int i; while (done == 0) { done = 1; for (i = 0; i <= 4; i++) { if (array[i] = 1; i--) { if (array[i] > array[i-1]) { swap(&array[i], &array[i-1]); done = 0; } } } printf("%d", array[3]); }
La salida del programa es _____.
Nota: Esta pregunta apareció como tipo de respuesta numérica.
(A) 1
(B) 2
(C) 3
(D) 4
Respuesta: (C)
Explicación: Después de la ejecución del ciclo for, el contenido de la array:
Primera vez: 5 3 4 6 2 1
Segunda vez: 6 5 4 3 2 1
Tercera vez: 6 5 4 3 2 1
Ahora, cuando el bucle while se ejecute de nuevo, done = 1 y el primer y segundo bucle for si la condición no se cumple .
Por lo tanto, al final, el valor de arr[3] = 3, la opción C es correcta.
Mira esto para entender más:
#include <stdio.h> void swap(int *t, int *x) { int m; m = *t; *t = *x; *x = m; } int main() { int array[] = {3, 5, 1, 4, 6, 2}; int done = 0; int i; while (done == 0) { done = 1; for( i = 0; i <= 4; i++) { if(array[i] < array[i+1]) { swap(&array[i], &array[i+1]); done = 0; } } for (i = 5; i >= 1; i--) { if( array[i] > array[i-1]) { swap(&array[i], &array[i-1]); done = 0; } } } printf("%d", array[3]); }
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