AKTU 1er año Sem 2 Documento resuelto 2017-18 | COMP. SISTEMA Y PROGRAMACION C | Sec C

Enlace de descarga de papel : Papel | semestre 2 | 2017-18

Tecnología B.
(SEM-II) EXAMEN DE TEORIA 2017-18
SISTEMA INFORMÁTICO Y PROGRAMACIÓN EN C

Tiempo: 3 horas
Marcas totales : 70

Nota :-

  • Hay tres secciones. La Sección A lleva 20 puntos, la Sección B lleva 30 puntos y la Sección C lleva 50 puntos.
  • Intenta todas las preguntas. Las marcas se indica frente a cada pregunta.
  • Asumir datos adecuados siempre que sea necesario.

Sección – C

3. Intente cualquiera de los siguientes: (7*1 = 7)

  1. Describa ¿Compilador, intérprete, ensamblador? Escriba los nombres de los compiladores que se usan en la programación en C.
    Los procesadores de lenguaje pueden ser cualquiera de los siguientes tres tipos:
    1. Compilador:
      el procesador de lenguaje que lee el programa fuente completo escrito en lenguaje de alto nivel de una sola vez y lo traduce a un programa equivalente en lenguaje de máquina se denomina compilador.
      Ejemplo: C, C++, C#, Java

      En un compilador, el código fuente se traduce correctamente a código objeto si no tiene errores. El compilador especifica los errores al final de la compilación con números de línea cuando hay errores en el código fuente. Los errores deben eliminarse antes de que el compilador pueda volver a compilar correctamente el código fuente.>

    2. Ensamblador:
      el Ensamblador se utiliza para traducir el programa escrito en lenguaje ensamblador a código de máquina. El programa fuente es una entrada del ensamblador que contiene instrucciones en lenguaje ensamblador. La salida generada por el ensamblador es el código objeto o código de máquina comprensible para la computadora.

    3. Intérprete:
      la traducción de una declaración única del programa fuente al código de la máquina la realiza el procesador de lenguaje y la ejecuta inmediatamente antes de pasar a la siguiente línea, lo que se denomina intérprete. Si hay un error en la declaración, el intérprete finaliza su proceso de traducción en esa declaración y muestra un mensaje de error. El intérprete pasa a la siguiente línea para su ejecución solo después de eliminar el error. Un Intérprete ejecuta directamente instrucciones escritas en un lenguaje de programación o secuencias de comandos sin convertirlas previamente a un código de objeto o código de máquina.
      Ejemplo: Perl, Python y Matlab.

    Nombre de los Compiladores en lenguaje C:

    • Comunidad de Microsoft Visual Studio
    • código x
    • Compilador Tiny C (TCC)
    • Sonido metálico
    • Compilador GNU C
  2. Convierte lo siguiente:
    1. (0110110.1100) 2 =() 8

      (0110110.1100) 2

      = (0 110 110.110 0) 2

      = (66.6) 8

    2. (74,67) 10 =() 16

      (74,67) 10

      = (4A.AB851EB851EB851EB852) 16

    3. (AB.CD) 16 =() 8

      (AB.CD) 16

      = (253.632) 8

    4. (EFE.45) 16 =() 2

      (EFE.45) 16

      = (111011111110.01000101) 2

    5. (576,4) 10 =() 6

      (576,4) 10

      = (2400,222222222222222222222) 6

    6. (1234.7) 8 =() 16

      (1234.7) 8

      = (29C.E) 16

    7. (334,43) 8 =() 2

      (334,43) 8

      = (11011100,100011) 2

4. Intente cualquiera de las siguientes partes: (7 x 1 = 7)

  1. Explique los diferentes operadores bit a bit disponibles en C con ejemplos.

    En C, los siguientes 6 operadores son operadores bit a bit (funcionan a nivel de bit)

    & (Y bit a bit) Toma dos números como operandos y hace AND en cada bit de dos números. El resultado de AND es 1 solo si ambos bits son 1.

    | (OR bit a bit) Toma dos números como operandos y hace OR en cada bit de dos números. El resultado de OR es 1 cualquiera de los dos bits es 1.

    ^ (XOR bit a bit) Toma dos números como operandos y hace XOR en cada bit de dos números. El resultado de XOR es 1 si los dos bits son diferentes.

    << (desplazamiento a la izquierda) Toma dos números, desplaza a la izquierda los bits del primer operando, el segundo operando decide el número de lugares a desplazar.

    >> (desplazamiento a la derecha) Toma dos números, desplaza a la derecha los bits del primer operando, el segundo operando decide el número de lugares a desplazar.

    ~ (NO bit a bit) Toma un número e invierte todos sus bits

    El siguiente es un ejemplo de programa C.

    // C Program to demonstrate
    // use of bitwise operators
      
    #include <stdio.h>
    int main()
    {
      
        unsigned char a = 5, b = 9;
      
        // a = 5(00000101), b = 9(00001001)
        printf("a = %d, b = %d\n", a, b);
      
        // The result is 00000001
        printf("a&b = %d\n", a & b);
      
        // The result is 00001101
        printf("a|b = %d\n", a | b);
      
        // The result is 00001100
        printf("a^b = %d\n", a ^ b);
      
        // The result is 11111010
        printf("~a = %d\n", a = ~a);
      
        // The result is 00010010
        printf("b<<1 = %d\n", b << 1);
      
        // The result is 00000100
        printf("b>>1 = %d\n", b >> 1);
      
        return 0;
    }
    Producción:

    a = 5, b = 9
    a&b = 1
    a|b = 13
    a^b = 12
    ~a = 250
    b<<1 = 18
    b>>1 = 4
    
  2. ¿Qué se entiende por conversión de tipos ? ¿Por qué es necesario? Explique la conversión de tipos implícita y explícita con ejemplos.

    Una conversión de tipo es básicamente una conversión de un tipo a otro. Hay dos tipos de conversión de tipos:

    1. Conversión de tipo implícita

      También conocido como ‘conversión automática de tipos’.

      • Realizado por el compilador por su cuenta, sin ningún disparador externo por parte del usuario.
      • Generalmente tiene lugar cuando en una expresión está presente más de un tipo de datos. En tal condición, la conversión de tipo (promoción de tipo) tiene lugar para evitar la pérdida de datos.
      • Todos los tipos de datos de las variables se actualizan al tipo de datos de la variable con el tipo de datos más grande.
            
               bool -> char -> short int -> int -> 
               unsigned int -> long -> unsigned -> 
               long long -> float -> double -> long double
        
      • Es posible que las conversiones implícitas pierdan información, los signos se pueden perder (cuando firmado se convierte implícitamente en sin firmar) y se puede producir un desbordamiento (cuando long long se convierte implícitamente en float).

      Ejemplo de conversión implícita de tipos:

      // An example of implicit conversion
      #include <stdio.h>
      int main()
      {
          int x = 10; // integer x
          char y = 'a'; // character c
        
          // y implicitly converted to int. ASCII
          // value of 'a' is 97
          x = x + y;
        
          // x is implicitly converted to float
          float z = x + 1.0;
        
          printf("x = %d, z = %f", x, z);
          return 0;
      }
      Producción:

      x = 107, z = 108.000000
      

      Producción:

      x = 107, z = 108.000000
    1. Conversión de tipo explícita

      Este proceso también se denomina conversión de tipos y está definido por el usuario. Aquí el usuario puede escribir el resultado para convertirlo en un tipo de datos particular.

      La sintaxis en C:

      (type) expression

      Tipo indica el tipo de datos al que se convierte el resultado final.

      // C program to demonstrate explicit type casting
      #include <stdio.h>
        
      int main()
      {
          double x = 1.2;
        
          // Explicit conversion from double to int
          int sum = (int)x + 1;
        
          printf("sum = %d", sum);
        
          return 0;
      }
      Producción:

      sum = 2
      

      Producción:

      sum = 2

      Ventajas de la conversión de tipo

      • Esto se hace para aprovechar ciertas características de las jerarquías de tipos o las representaciones de tipos.
      • Nos ayuda a calcular expresiones que contienen variables de diferentes tipos de datos.

5. Intente cualquiera de los siguientes: (7*1 = 7)

  1. Escriba un programa para encontrar el número de Armstrong del 1 al 100.

    // C program to find Armstrong number
    // from 1 to 100
      
    #include <stdio.h>
      
    /* Function to calculate x raised to the power y */
    int power(int x, unsigned int y)
    {
        if (y == 0)
            return 1;
        if (y % 2 == 0)
            return power(x, y / 2) * power(x, y / 2);
        return x * power(x, y / 2) * power(x, y / 2);
    }
      
    /* Function to calculate order of the number */
    int order(int x)
    {
        int n = 0;
        while (x) {
            n++;
            x = x / 10;
        }
        return n;
    }
      
    // Function to check whether the given number is
    // Armstrong number or not
    int isArmstrong(int x)
    {
        // Calling order function
        int n = order(x);
        int temp = x, sum = 0;
        while (temp) {
            int r = temp % 10;
            sum += power(r, n);
            temp = temp / 10;
        }
      
        // If satisfies Armstrong condition
        if (sum == x)
            return 1;
        else
            return 0;
    }
      
    // Driver Program
    int main()
    {
        int i = 1;
      
        for (i = 1; i <= 100; i++)
            if (isArmstrong(i) == 1)
                printf("%d is an ArmStrong Number\n", i);
            else
                printf("%d is not an ArmStrong Number\n", i);
      
        return 0;
    }
    Producción:

    1 is an ArmStrong Number
    2 is an ArmStrong Number
    3 is an ArmStrong Number
    4 is an ArmStrong Number
    5 is an ArmStrong Number
    6 is an ArmStrong Number
    7 is an ArmStrong Number
    8 is an ArmStrong Number
    9 is an ArmStrong Number
    10 is not an ArmStrong Number
    11 is not an ArmStrong Number
    12 is not an ArmStrong Number
    13 is not an ArmStrong Number
    14 is not an ArmStrong Number
    15 is not an ArmStrong Number
    16 is not an ArmStrong Number
    17 is not an ArmStrong Number
    18 is not an ArmStrong Number
    19 is not an ArmStrong Number
    20 is not an ArmStrong Number
    21 is not an ArmStrong Number
    22 is not an ArmStrong Number
    23 is not an ArmStrong Number
    24 is not an ArmStrong Number
    25 is not an ArmStrong Number
    26 is not an ArmStrong Number
    27 is not an ArmStrong Number
    28 is not an ArmStrong Number
    29 is not an ArmStrong Number
    30 is not an ArmStrong Number
    31 is not an ArmStrong Number
    32 is not an ArmStrong Number
    33 is not an ArmStrong Number
    34 is not an ArmStrong Number
    35 is not an ArmStrong Number
    36 is not an ArmStrong Number
    37 is not an ArmStrong Number
    38 is not an ArmStrong Number
    39 is not an ArmStrong Number
    40 is not an ArmStrong Number
    41 is not an ArmStrong Number
    42 is not an ArmStrong Number
    43 is not an ArmStrong Number
    44 is not an ArmStrong Number
    45 is not an ArmStrong Number
    46 is not an ArmStrong Number
    47 is not an ArmStrong Number
    48 is not an ArmStrong Number
    49 is not an ArmStrong Number
    50 is not an ArmStrong Number
    51 is not an ArmStrong Number
    52 is not an ArmStrong Number
    53 is not an ArmStrong Number
    54 is not an ArmStrong Number
    55 is not an ArmStrong Number
    56 is not an ArmStrong Number
    57 is not an ArmStrong Number
    58 is not an ArmStrong Number
    59 is not an ArmStrong Number
    60 is not an ArmStrong Number
    61 is not an ArmStrong Number
    62 is not an ArmStrong Number
    63 is not an ArmStrong Number
    64 is not an ArmStrong Number
    65 is not an ArmStrong Number
    66 is not an ArmStrong Number
    67 is not an ArmStrong Number
    68 is not an ArmStrong Number
    69 is not an ArmStrong Number
    70 is not an ArmStrong Number
    71 is not an ArmStrong Number
    72 is not an ArmStrong Number
    73 is not an ArmStrong Number
    74 is not an ArmStrong Number
    75 is not an ArmStrong Number
    76 is not an ArmStrong Number
    77 is not an ArmStrong Number
    78 is not an ArmStrong Number
    79 is not an ArmStrong Number
    80 is not an ArmStrong Number
    81 is not an ArmStrong Number
    82 is not an ArmStrong Number
    83 is not an ArmStrong Number
    84 is not an ArmStrong Number
    85 is not an ArmStrong Number
    86 is not an ArmStrong Number
    87 is not an ArmStrong Number
    88 is not an ArmStrong Number
    89 is not an ArmStrong Number
    90 is not an ArmStrong Number
    91 is not an ArmStrong Number
    92 is not an ArmStrong Number
    93 is not an ArmStrong Number
    94 is not an ArmStrong Number
    95 is not an ArmStrong Number
    96 is not an ArmStrong Number
    97 is not an ArmStrong Number
    98 is not an ArmStrong Number
    99 is not an ArmStrong Number
    100 is not an ArmStrong Number
    
  2. Escriba un programa para generar la siguiente estructura de números:
    12345
    1234
    123
    12
    

    #include <stdio.h>
      
    int main()
    {
      
        int i = 0, j = 0;
      
        for (i = 1; i < 5; i++) {
            for (j = 1; j <= 6 - i; j++)
                printf("%d", j);
            printf("\n");
        }
      
        return 0;
    }
    Producción:

    12345
    1234
    123
    12
    

6. Intente cualquiera de los siguientes: (7*1 = 7)

  1. Escriba un programa para sumar dos arrays de dimensión 3*3 y almacene el resultado en otra array.

    #include <stdio.h>
    #define N 3
      
    // This function adds A[][] and B[][], and stores
    // the result in C[][]
    void add(int A[][N], int B[][N], int C[][N])
    {
        int i, j;
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
                C[i][j] = A[i][j] + B[i][j];
    }
      
    int main()
    {
        int A[N][N] = { { 1, 1, 1 },
                        { 2, 2, 2 },
                        { 3, 3, 3 } };
      
        int B[N][N] = { { 1, 1, 1 },
                        { 2, 2, 2 },
                        { 3, 3, 3 } };
      
        int C[N][N]; // To store result
        int i, j;
        add(A, B, C);
      
        printf("Result matrix is \n");
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++)
                printf("%d ", C[i][j]);
            printf("\n");
        }
      
        return 0;
    }
    Producción:

    Result matrix is 
    2 2 2 
    4 4 4 
    6 6 6
    
  2. Escriba un programa en C para crear una base de datos de cincuenta estudiantes para almacenar detalles personales como el número de registro, el nombre y las calificaciones. Imprima todos los detalles del estudiante cuyo nombre es ingresado por el usuario.

    #include <stdio.h>
    #include <string.h>
      
    struct Student {
        int roll_no;
        char name[100];
        float marks;
    };
      
    int main()
    {
        int i = 0;
        char n[100];
        struct Student student[50];
      
        for (i = 0; i < 50; i++) {
            printf("\nEnter details for Student %d", i + 1);
      
            printf("\nRoll Number: ");
            scanf("%d", &student[i].roll_no);
      
            printf("\nName: ");
            scanf("%s", student[i].name);
      
            printf("\nMarks: ");
            scanf("%f", &student[i].marks);
        }
      
        printf("\nEnter the name of the student whose details you need: ");
        scanf("%s", n);
      
        for (i = 0; i < 50; i++) {
            if (strcmp(n, student[i].name) == 0) {
      
                printf("\nRoll Number: %d", student[i].roll_no);
      
                printf("\nName: %s", student[i].name);
      
                printf("\nMarks: %f", student[i].marks);
      
                break;
            }
        }
      
        if (i == 50)
            printf("No student found with this name");
    }

7. Intente cualquiera de los siguientes: (7*1 = 7)

  1. Escriba un programa en C para invertir una string usando un puntero.

    #include <stdio.h>
    #include <string.h>
      
    // Function to reverse the string
    // using pointers
    void reverseString(char* str)
    {
        int l, i;
        char *begin_ptr, *end_ptr, ch;
      
        // Get the length of the string
        l = strlen(str);
      
        // Set the begin_ptr and end_ptr
        // initially to start of string
        begin_ptr = str;
        end_ptr = str;
      
        // Move the end_ptr to the last character
        for (i = 0; i < l - 1; i++)
            end_ptr++;
      
        // Swap the char from start and end
        // index using begin_ptr and end_ptr
        for (i = 0; i < l / 2; i++) {
      
            // swap character
            ch = *end_ptr;
            *end_ptr = *begin_ptr;
            *begin_ptr = ch;
      
            // update pointers positions
            begin_ptr++;
            end_ptr--;
        }
    }
      
    // Driver code
    int main()
    {
      
        // Get the string
        char str[100] = "GeeksForGeeks";
        printf("Enter a string: %s\n", str);
      
        // Reverse the string
        reverseString(str);
      
        // Print the result
        printf("Reverse of the string: %s\n", str);
      
        return 0;
    }
  2. Explicar las siguientes funciones en las operaciones con archivos.
    • getw() : La función getw() se usa para leer un valor entero de un archivo. Este archivo está apuntado por el puntero pasado como parámetro.

      Sintaxis:

      int getw(FILE *fp);
    • putw() : La función putw() se usa para escribir un valor entero de un archivo. Este archivo está apuntado por el puntero pasado como parámetro. Y el valor entero también se especifica como parámetro.

      Sintaxis:

       int putw(int number, FILE *fp);
    • fscanf ( ) : fscanf lee desde un archivo apuntado por el puntero FILE (ptr), en lugar de leer desde el flujo de entrada.

      Sintaxis:

      int fscanf(FILE *ptr, const char *format, ...) 

      Considere el siguiente archivo de texto abc.txt

      NAME    AGE   CITY
      abc     12    hyderbad
      bef     25    delhi
      cce     65    bangalore  

      Ahora, queremos leer solo el campo de la ciudad del archivo de texto anterior, ignorando todos los demás campos. Una combinación de fscanf y el truco mencionado anteriormente hace esto con facilidad.

    • fprintf ( ) : el printf se usa para imprimir contenido en el archivo en lugar de la consola de salida estándar.
      int fprintf(FILE *fptr, const char *str, ...);

Publicación traducida automáticamente

Artículo escrito por RishabhPrabhu 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 *