Lenguaje C | conjunto 10

Se han hecho las siguientes preguntas en el examen GATE CS 2014.
1) Considere el siguiente programa en lenguaje C: 
 

C

#include <stdio.h>
main()
{
    int i;
    int *pi = &i;
    scanf("%d", pi);
    printf("%d\n", i+5);
}

¿Cuál de las siguientes afirmaciones es verdadera?  
(A) La compilación falla. 
(B) La ejecución da como resultado un error de tiempo de ejecución. 
(C) En la ejecución, el valor impreso es 5 más que la dirección de la variable i. 
(D) En la ejecución, el valor impreso es 5 más que el valor entero ingresado.
Respuesta: (D)  
Explicación: No hay ningún problema en el programa ya que pi apunta a una ubicación válida. 
Además, en scanf() pasamos la dirección de una variable y pi es una dirección.
2) Considere la función func que se muestra a continuación: 
 

C

int func(int num)
{
    int count = 0;
    while (num)
    {
        count++;
        num >>= 1;
    }
    return (count);
}

El valor devuelto por func(435) es __________.
Respuesta:
Explicación: La función devuelve principalmente la posición del bit más significativo en la representación binaria de n. El MSD en representación binaria de 435 es el noveno bit.
3) Considere la función C dada a continuación. 
 

C

int f(int j)
{
  static int i = 50;
  int k;
  if (i == j)
  {
    printf("something");
    k = f(i);
    return 0;
  }
  else return 0;
}

¿Cuál de las siguientes es VERDADERA?  
(A) La función devuelve 0 para todos los valores de j. 
(B) La función imprime la string algo para todos los valores de j. 
(C) La función devuelve 0 cuando j = 50. 
(D) La función agotará la pila de tiempo de ejecución o entrará en un ciclo infinito cuando j = 50
Respuesta: (D)  
Explicación: cuando j es 50, la función se llamaría a sí misma nuevamente y nuevamente, ya que ni i ni j cambian dentro de la recursividad.
4) Considere la función C dada a continuación. Suponga que la array listA contiene n (> 0) elementos, ordenados en orden ascendente. 
 

C

int ProcessArray(int *listA, int x, int n)
{
    int i, j, k;
    i = 0;
    j = n-1;
    do{
        k = (i+j)/2;
        if (x <= listA[k])
            j = k-1;
        if (listA[k] <= x)
            i = k+1;
    } while (i <= j);
    if (listA[k] == x)
        return(k);
    else
        return -1;
}

¿Cuál de las siguientes afirmaciones sobre la función ProcessArray es CORRECTA?  
(A) Se encontrará con un bucle infinito cuando x no esté en la lista A. 
(B) Es una implementación de búsqueda binaria. 
(C) Siempre encontrará el elemento máximo en listA. 
(D) Devolverá -1 incluso cuando x está presente en listA.
Respuesta: (B)  
Explicación: El programa es una implementación C iterativa simple de Binary Search
5) Considere la siguiente función 
 

C

double f(double x)
{
   if (abs(x*x - 3) < 0.01) return x;
   else return f(x/2 + 1.5/x);
}

Da un valor q (a 2 decimales) tal que f(q) devuelva q:_____ .
Respuesta: 1.732  
Explicación: 
Lo principal a tener en cuenta es la expresión “abs(x*x – 3) < 0.01” dentro de la condición if. La función devolvería x cuando (x – 3 ) está cerca de 0 (menor que 0,01), lo que significa que cuando x está cerca de la raíz cuadrada de 3. La raíz cuadrada de 3 es 1,732.
Consulte a continuación las soluciones completas de todos los documentos GATE CS 2014  
GATE-CS-2014-(Conjunto-1)  
GATE-CS-2014-(Conjunto-2)  
GATE-CS-2014-(Conjunto-3)
Escriba comentarios si encuentra alguna de las respuestas/explicaciones es incorrecta, o 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

Deja una respuesta

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