Salida de programas en C | conjunto 4

Predecir la salida de los siguientes programas 

Pregunta 1 
 

c

#include‹stdio.h›
int main()
{
    struct site
    {
        char name[] = "GeeksforGeeks";
        int no_of_pages = 200;
    };
    struct site *ptr;
    printf("%d",ptr->no_of_pages);
    printf("%s",ptr->name);
    getchar();
    return 0;
}

Salida: 
Error del compilador
Explicación: 
Tenga en cuenta la diferencia entre la declaración de estructura/unión y la declaración de variable. Cuando declara una estructura, en realidad declara un nuevo tipo de datos adecuado para su propósito. Por lo tanto, no puede inicializar valores ya que no es una declaración de variable sino una declaración de tipo de datos.
Referencia: 
http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/SYNTAX/struct.html
Pregunta 2 
 

c

int main()
{
    char a[2][3][3] = {'g','e','e','k','s','f','o',
                           'r','g','e','e','k','s'};
    printf("%s ", **a);
    getchar();
    return 0;
}

Salida: 
geeksforgeeks
Explicación: 
Hemos creado una array 3D que debería tener 2*3*3 (= 18) elementos, pero estamos inicializando solo 13 de ellos. En C, cuando inicializamos menos elementos en una array, todos los elementos no inicializados se convierten en ‘\ 0’ en caso de char y 0 en caso de números enteros. 
Pregunta 3 
 

c

int main()
{
   char str[]= "geeks\nforgeeks";
   char *ptr1, *ptr2;
      
   ptr1 = &str[3];
   ptr2 = str + 5;
   printf("%c", ++*str - --*ptr1 + *ptr2 + 2);
   printf("%s", str);
  
   getchar();
   return 0;
}

Salida: 
heejs 
forgeeks
Explicación: 
Inicialmente ptr1 apunta a ‘k’ y ptr2 apunta a ‘\n’ en “geeks\nforgeeks”. En la declaración de impresión, el valor en str se incrementa en 1 y el valor en ptr1 se reduce en 1. Entonces, la string se convierte en «heejs\nforgeeks». 
La primera instrucción de impresión se convierte en 
printf(“%c”, ‘h’ – ‘j’ + ‘\n’ + 2)
‘h’ – ‘j’ + ‘\n’ + 2 = -2 + ‘\n’ + 2 = ‘\n’
Primeras declaraciones de impresión carácter de nueva línea. y la próxima declaración de impresión imprime «heejs\nforgeeks». 
Pregunta 4 
 

c

#include <stdio.h>
int fun(int n)
{
    int i, j, sum = 0;
    for(i = 1;i<=n;i++)
        for(j=i;j<=i;j++)
            sum=sum+j;
    return(sum);
}
 
int main()
{
    printf("%d", fun(15));
    getchar();
    return 0;
}

Salida: 120 
Explicación: fun(n) calcula la suma de los primeros n enteros o podemos decir que devuelve n(n+1)/2.
Pregunta 5 
 

c

#include <stdio.h>
int main()
{
    int c = 5, no = 1000;
    do {
        no /= c;
    } while(c--);
 
    printf ("%d\n", no);
    return 0;
}

Salida: Excepción – Dividir por cero
Explicación: Hay un error en el programa anterior. Va dentro del bucle do-while para c = 0 también. ¡Tenga cuidado cuando esté usando un bucle do-while como este!
 

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 *