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)
- 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:- 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#, JavaEn 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.>
- 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. - 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
- Compilador:
- Convierte lo siguiente:
- (0110110.1100) 2 =() 8
(0110110.1100) 2
= (0 110 110.110 0) 2
= (66.6) 8
- (74,67) 10 =() 16
(74,67) 10
= (4A.AB851EB851EB851EB852) 16
- (AB.CD) 16 =() 8
(AB.CD) 16
= (253.632) 8
- (EFE.45) 16 =() 2
(EFE.45) 16
= (111011111110.01000101) 2
- (576,4) 10 =() 6
(576,4) 10
= (2400,222222222222222222222) 6
- (1234.7) 8 =() 16
(1234.7) 8
= (29C.E) 16
- (334,43) 8 =() 2
(334,43) 8
= (11011100,100011) 2
- (0110110.1100) 2 =() 8
4. Intente cualquiera de las siguientes partes: (7 x 1 = 7)
- 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
- ¿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:
- 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
- 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.
- Conversión de tipo implícita
5. Intente cualquiera de los siguientes: (7*1 = 7)
- 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
- 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)
- 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
- 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)
- 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;
}
- 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, ...);
- 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.
Publicación traducida automáticamente
Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA