Se han hecho las siguientes preguntas en el examen GATE CS 2010.
1. ¿Qué imprime el siguiente programa?
#include<stdio.h> void f(int *p, int *q) { p = q; *p = 2; } int i = 0, j = 1; int main() { f(&i, &j); printf("%d %d \n", i, j); getchar(); return 0; }
(A) 2 2
(B) 2 1
(C) 0 1
(D) 0 2
Respuesta (D)
Consulte a continuación f() con comentarios para obtener una explicación.
/* p points to i and q points to j */ void f(int *p, int *q) { p = q; /* p also points to j now */ *p = 2; /* Value of j is changed to 2 now */ }
2. ¿Cuál es el valor impreso por el siguiente programa en C?
#include<stdio.h> int f(int *a, int n) { if(n <= 0) return 0; else if(*a % 2 == 0) return *a + f(a+1, n-1); else return *a - f(a+1, n-1); } int main() { int a[] = {12, 7, 13, 4, 11, 6}; printf("%d", f(a, 6)); getchar(); return 0; }
(A) -9
(B) 5
(C) 15
(D) 19
Respuesta (C)
f() es una función recursiva que suma f(a+1, n-1) a *a si *a es par. Si *a es impar entonces f() resta f(a+1, n-1) de *a. Vea a continuación el árbol de recursión para la ejecución de f(a, 6).
.
f(add(12), 6) /*Since 12 is first element. a contains address of 12 */ | | 12 + f(add(7), 5) /* Since 7 is the next element, a+1 contains address of 7 */ | | 7 - f(add(13), 4) | | 13 - f(add(4), 3) | | 4 + f(add(11), 2) | | 11 - f(add(6), 1) | | 6 + 0
Entonces, el valor final devuelto es 12 + (7 – (13 – (4 + (11 – (6 + 0))))) = 15
Consulte GATE Corner para ver todos los documentos/soluciones/explicaciones del año anterior, programa de estudios, fechas importantes, notas, etc.
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
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