Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Examen 2021 programación, Exámenes de Programación C

Programacion examen resuelto del año 2021

Tipo: Exámenes

2022/2023

Subido el 06/06/2023

Mathew2001
Mathew2001 🇪🇸

5

(2)

5 documentos

1 / 6

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Examen de Programación (Grados en Ingeniería Mecánica, Eléctrica, Electrónica y Química Industrial)
1 de Julio 2021
APELLIDO/S: NOMBRE:
DNI: GRUPO DOCENTE: GRUPO TRABAJO:
Instrucciones:
Para seleccionar la respuesta (o respuestas) correcta(s), rodear la letra de la opción con un círculo O
Para anular una respuesta ya seleccionada tachar el círculo con una cruz X
Para volver a seleccionar de nuevo una respuesta anulada usar una flecha a la izq. de la opción
El examen consta de 30 preguntas tipo test de respuestas múltiples
Cada pregunta admite una o varias opciones correctas (hay que seleccionar todas las opciones correctas)
Puntuación de cada pregunta: 8.0/30 (si se han seleccionado solamente todas las opciones correctas)
0.0 (en caso contrario)
¿Cuál ó cuáles de las siguientes afirmaciones son correctas?
a. La representación en C de los datos long int siempre ocupa el doble de almacenamiento de los datos int
b. La representación en C de un número real con el tipo double es exacta y sin límites
c. La representación en C de un dato con el tipo char siempre ocupa 1 byte de almacenamiento
d. La representación en C de los datos lógicos se hace a través de otros tipos de datos (int o char)
e. Todas las afirmaciones anteriores son incorrectas
¿Cuál o cuáles de las siguientes constantes literales son válidas en lenguaje C?
a. 0
b. 1.E-3
c. ' \101'
d. "Stop: '1' peligro"
e. 0xA73F
f. "0xA73F"
g. -1.0E4.2
h. true
i. '/n'
j. "/n"
k. Ninguna de las
anteriores es válida
Dado el siguiente código en lenguaje C, señale la afirmación o afirmaciones correctas:
a. El programa lee por teclado el número del DNI y
luego una letra, tras lo cual imprime el NIF
b. Error de compilación: falta la librería stdlib.h
c. Error de compilación: falta un ; tras llave de cierre }
d. El programa tiene un error en tiempo de ejecución:
no se puede restar un entero a un carácter (%i-%c)
e. Todas las afirmaciones anteriores son incorrectas
#include <stdio.h>
int main(void){
int num;
char c;
printf("Introduzca numero DNI: ");
scanf(" %i", num);
printf("Introduzca letra: ");
scanf(" %c",c);
printf("NIF: %i-%c", num, c);
return 0;
}
Indique cuál (o cuáles) de las siguientes afirmaciones es verdadera en lenguaje C:
a. Una variable de tipo unsigned int puede almacenar valores negativos.
b. Una variable de tipo double no puede almacenar valores enteros.
c. La sentencia char letras='ab';” asigna a la variable letras la cadena de caracteres 'ab'.
d. La sentencia “double if=3.2;” asigna a la variable if el valor 3.2.
e. Todas las afirmaciones anteriores son falsas
En lenguaje C, ¿qué instrucción/instrucciones de las siguientes utilizaría para escribir en pantalla un número real
en doble precisión con 3 cifras decimales almacenado en la variable x?
a. printf("%3f", x);
b. printf("%.3f", x);
c. printf("%f3", x);
d. printf("%f3.3", x);
e. printf("%3f", *x);
f. Ninguna de las anteriores
En C, si tenemos que a, b y c son variables de tipo int, float y char, respectivamente, y que tienen asignados los
valores a=10, b=5.1 y c='x', indicar qué expresión (o expresiones) devuelven como resultado verdadero (distinto
de cero):
a. !((a<b)&&(c=='x'))
b. (a=(a=20)%5) || ! (a && ! c)
c. a && ! c || b
d. (b-->5.0)&&(++a>10)
e. Ninguna de las anteriores
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Examen 2021 programación y más Exámenes en PDF de Programación C solo en Docsity!

Examen de Programación (Grados en Ingeniería Mecánica, Eléctrica, Electrónica y Química Industrial) 1 de Julio 2021 APELLIDO/S: NOMBRE: DNI: GRUPO DOCENTE: GRUPO TRABAJO: Instrucciones : Para seleccionar la respuesta (o respuestas) correcta(s), rodear la letra de la opción con un círculo O Para anular una respuesta ya seleccionada tachar el círculo con una cruz X Para volver a seleccionar de nuevo una respuesta anulada usar una flecha a la izq. de la opción → El examen consta de 30 preguntas tipo test de respuestas múltiples Cada pregunta admite una o varias opciones correctas (hay que seleccionar todas las opciones correctas) Puntuación de cada pregunta: 8.0/30 (si se han seleccionado solamente todas las opciones correctas) 0.0 (en caso contrario)

  • ¿Cuál ó cuáles de las siguientes afirmaciones son correctas? a. La representación en C de los datos long int siempre ocupa el doble de almacenamiento de los datos int b. La representación en C de un número real con el tipo double es exacta y sin límites c. La representación en C de un dato con el tipo char siempre ocupa 1 byte de almacenamiento d. La representación en C de los datos lógicos se hace a través de otros tipos de datos ( int o char ) e. Todas las afirmaciones anteriores son incorrectas
  • ¿Cuál o cuáles de las siguientes constantes literales son válidas en lenguaje C? a. 0 b. 1 .E- 3 c. ' \ 101 ' d. "Stop: ' 1 ' peligro" e. 0xA73F f. "0xA73F" g. - 1.0E4. h. true i. '/n' j. "/n" k. Ninguna de las anteriores es válida
  • Dado el siguiente código en lenguaje C, señale la afirmación o afirmaciones correctas: a. El programa lee por teclado el número del DNI y luego una letra, tras lo cual imprime el NIF b. Error de compilación: falta la librería stdlib.h c. Error de compilación: falta un ; tras llave de cierre } d. El programa tiene un error en tiempo de ejecución: no se puede restar un entero a un carácter (%i-%c) e. Todas las afirmaciones anteriores son incorrectas #include <stdio.h> int main(void){ int num; char c; printf("Introduzca numero DNI: "); scanf(" %i", num); printf("Introduzca letra: "); scanf(" %c",c); printf("NIF: %i-%c", num, c); return 0; }
  • Indique cuál (o cuáles) de las siguientes afirmaciones es verdadera en lenguaje C: a. Una variable de tipo unsigned int puede almacenar valores negativos. b. Una variable de tipo double no puede almacenar valores enteros. c. La sentencia “char letras='ab';” asigna a la variable letras la cadena de caracteres 'ab'. d. La sentencia “double if=3. 2 ;” asigna a la variable if el valor 3. 2. e. Todas las afirmaciones anteriores son falsas
  • En lenguaje C, ¿qué instrucción/instrucciones de las siguientes utilizaría para escribir en pantalla un número real en doble precisión con 3 cifras decimales almacenado en la variable x? a. printf("%3f", x); b. printf("%.3f", x); c. printf("%f3", x); d. printf("%f3.3", x); e. printf("%3f", *x); f. Ninguna de las anteriores
  • En C, si tenemos que a , b y c son variables de tipo int , float y char , respectivamente, y que tienen asignados los valores a=10, b=5.1 y c='x', indicar qué expresión (o expresiones) devuelven como resultado verdadero (distinto de cero): a. !((a<b)&&(c=='x')) b. (a=(a=20)%5) ||! (a &&! c) c. a &&! c || b d. (b-->5.0)&&(++a>10) e. Ninguna de las anteriores
  • ¿Qué mensaje aparece en pantalla al ejecutar el siguiente programa en C? a. Agua hirviendo b. Agua muy caliente c. Agua caliente d. Agua congelada e. (No aparece nada en pantalla) f. Error de compilación: se asigna un valor entero a una variable real g. Error de ejecución: el programa entra en un bucle infinito #include <stdio.h> int main(){ double temp=15; if(temp>0) if(temp>=100) printf("Agua hirviendo"); else if(temp>50) printf("Agua muy caliente"); else if(temp>25) printf("Agua caliente"); else printf("Agua congelada"); return 0; }
  • Indicar los valores que imprime en pantalla el siguiente programa en C: a. 10 9 8 7 6 5 4 3 2 1 0 b. 10 9 8 7 6 5 4 3 2 1 c. 9 8 7 6 5 4 3 2 1 0 - 1 d. 9 8 7 6 5 4 3 2 1 e. Error de compilación #include <stdio.h> int main(){ int a=10, b; while(a>0){ b=a--; printf("%i ", b); } return 0; }
  • Tras ejecutar el siguiente programa en C, ¿qué valores se muestran por pantalla? a. 16 64 b. 20 144 c. 80 4096 d. 4096 16777216 e. Error de compilación f. Ninguna de las respuestas anteriores es correcta #include <stdio.h> int main(){ int a=1,b=1,mayor; while((a<40)&&(b<100)){ if(a>b) mayor=a; else mayor=b; a=a+mayor; b=b*mayor; } printf("%i %i",a,b); return 0; }
  • ¿Qué mensaje se presenta en pantalla cuando se ejecuta el siguiente programa? a. El valor de x es 0 b. El valor de x es 1 c. El valor de x es 2 d. El valor de x es distinto de 0,1 y 2 e. No aparece nada en pantalla #include <stdio.h> int main(void) { int x=2; switch(x){ case '0': printf("El valor de x es 0"); break; case '1': printf("El valor de x es 1"); break; case '2': printf("El valor de x es 2"); break; default: printf("El valor de x es "); printf("distinto de 0,1 y 2"); } return 0; }
  • ¿Cuál (o cuáles) de las siguientes afirmaciones es cierta en relación con el prototipo de una función en C? a. Es obligatoria su inclusión al principio del código fuente b. Es obligatoria su inclusión al final del código fuente c. Puede ser eliminado sin ninguna consecuencia en el orden de escritura de las definiciones de las funciones en el código fuente d. En lenguaje C está prohibida su utilización a menos que se incluya la librería stdlib.h e. Ninguna de las respuestas anteriores es cierta

• Dado el siguiente fragmento de programa: ¿cuál ó cuáles de las activaciones de la función f podría escribirse

en la línea de guiones (-----------) para que el programa compilase sin errores ni avisos (“warnings”)?

a. f(x,y,c,*z); b. z=f(x,y,c);

c. f(x+y,3,c,z);

d. f(y,x,'A',z);

e. Todas las anteriores son incorrectas.

#include <stdio.h> void f(int x, int y, char c, float *z); int main(){ int x=4, y=5; char c='C'; float *z;


return(0); } void f(int x, int y, char c, float z){ / Definición de función */ }

  • Considerar el siguiente programa en C, donde la función llamada hace uso de la variable global (o externa) a. Después de la ejecución de este programa:

a. Variable a = 0

b. Variable a = 1

c. Variable a = 2

d. Error de compilación: el lenguaje C prohíbe el uso

de variables externas.

e. Todas las respuestas anteriores son incorrectas

#include <stdio.h> int a=1; void proc (int *b, int *c){ b=3; c=a%2; b=a+(b)(c); } int main(){ proc(&a,&a); printf("Variable a = %d", a); return 0; }

  • Indicar qué instrucciones hay que sustituir en lugar del comentario para que el siguiente programa imprima la representación en binario del número entero n que se recibe como argumento: a. printf(" %d" , n%2); imprime_binario (n/2); b. imprime_binario (n/2); printf(" %d" , n%2); c. imprime_binario (n/2); printf(" %d" , n/2); d. imprime_binario (n%2); printf(" %d" , n%2); void imprime_binario(int n){ if(n>=2){ /* COMENTARIO A SUSTITUIR */ }else printf(" %d" , n); }
  • Considere el siguiente prototipo de una función C que calcula la longitud de un tramo de una curva alabeada paramétrica cualquiera 𝒄⃗(𝒕) = (𝒙(𝒕), 𝒚(𝒕), 𝒛(𝒕)) comprendido entre los valores del parámetro t=t 1 y t=t 2 : double longCurva(void (c)(double t,double x,double y,double z), double t1, double t2); Si el siguiente prototipo de función se corresponde con la implementación en C de la hélice cilíndrica _c(t)=(10cos(t),-10seno(t),0.5t)_ : void c(double t,double x,double y,double z); ¿Cuál o cuáles de las siguientes instrucciones presenta en pantalla la longitud del tramo de dicha curva comprendido entre t=0 y _t=20π_? a. printf(" Longitud= %f" ,longCurva(c(t,&x,&y,&z),0,20M_PI)); b. printf(" Longitud= %f" ,longCurva(c(t,x,y,z),0,20M_PI)); c. printf(" Longitud= %f" ,longCurva(c,0,20M_PI)); d. printf(" Longitud= %f" ,longCurva(c,0,20*M_PI)); e. Ninguna de las anteriores
  • ¿Cuál (o cuáles) de las siguientes instrucciones lee un carácter desde teclado en la posición i-ésima de un “array” unidimensional de caracteres en C de nombre v? a. scanf(" %c", v[i]); b. scanf(" %c", &v[i]); c. scanf(" %c", *v[i]); d. v[i] = getchar(); e. Ninguna de las anteriores
  • De las siguientes declaraciones de nuevos tipos de datos, indicar cuál o cuáles seleccionaría para representar el número total de vueltas que da una rueda en un intervalo de tiempo de 100 segundos. La rueda está inicialmente en reposo y se somete a una aceleración angular constante α durante 10 segundos: tipo a; a. typedef double tipo[1..100]; b. typedef double tipo[99]; c. typedef double tipo[100]; d. typedef double tipo[101]; e. Ninguna de las anteriores
  • Dadas las variables A y B de tipo “array” unidimensional de diez reales en doble precisión, ¿cuál o cuáles de las siguientes instrucciones utilizaría para copiar todos los elementos de A en B en lenguaje C? a. A=B; b. B=A; c. for(int i=0; i<10;++i){ B[ i ] = A[ i ]; } d. for(int i=1; i<=10; i++){ B[ i ] = A[ i ]; } e. for(int i=0; i<10; ++i){ A[ i ] = B[ i ]; }
  • De las siguientes declaraciones de nuevos tipos de datos, indicar cuáles seleccionaría para representar las posiciones espaciales en coordenadas cartesianas de un avión en 100 instantes de tiempo diferentes: tipo a; a. typedef double tipo[0..99,0..99,0..99]; b. typedef double tipo[99][99][99]; c. typedef double tipo[100][100][100]; d. typedef double tipo[101][101][101]; e. Ninguna de las anteriores
  • ¿Cuál o cuáles de los siguientes fragmentos de código en C utilizaría para sumar todos los elementos de un “array” bidimensional de reales en doble precisión del tipo de datos indicado? a. for(i=0;i<FIL;++i) for(k=0;k<COL;++k) suma+=m[i][k]; b. for(i=0;i<COL;++i) for(k=0;k<FIL;++k) suma+=m[i][k]; c. for(i=1;i<=COL;i++) for(k=1;k<=FIL;k++) suma+=m[i][k]; d. for(i=0;i<COL;++i) for(k=0;k<FIL;++k) suma+=m[k][i]; e. Ninguna de las anteriores #include <stdio.h> #define FIL 10 #define COL 20 typedef double tipo_matriz[FIL][COL]; … tipo_matriz m; int i,k; double suma=0; …
  • Indicar cuál o cuáles de las siguientes funciones presenta por pantalla la cadena de caracteres que se pasa como argumento, pero escrita al revés: a. void escribir (char n){ if (n!=0) { escribir (n+1); putchar(n); } } b. void escribir (char n){ if (n!=0){ escribir (n++); putchar (n); } } c. void escribir (char n){ if (n!='\0'){ escribir (n+1); putchar (*n); } } d. void escribir (char n){ if (n!=0){ escribir (++n); putchar (n); } } e. Ninguna de las anteriores