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 de programacion 2022, Exámenes de Programación C

examen de programacion con las soluciones

Tipo: Exámenes

2021/2022

Subido el 06/06/2023

Mathew2001
Mathew2001 🇪🇸

5

(2)

5 documentos

1 / 7

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)
6 de Junio 2022
APELLIDO/S: NOMBRE:
DNI: GRUPO DOCENTE: GRUPO TRABAJO: REPOSITORIO TI:
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)
Un disco duro de un TeraByte (TB), ¿cuántos bits aproximadamente puede almacenar?
a. 1.000.000.000.000
b. 1.000.000.000.000.000
c. 4.000.000.000.000
d. 4.000.000.000.000.000
e. 8.000.000.000.000
f. 8.000.000.000.000.000
g. Ninguna de las anteriores
Considerar la representación binaria sesgada (o desplazada) para los números enteros con signo, con un tamaño
de representación de 6 dígitos. ¿Cuál sería la representación del número -21?
a. 110101
b. 101011
c. 101010
d. 100101
e. 010101
f. 001011
g. 001010
h. 000101
i. 100000
j. 011111
k. Ninguna de las
anteriores
En cuál de los siguientes registros internos de la Unidad de Control de un procesador central (CPU) se almacena la
dirección de memoria central de la siguiente instrucción a ejecutar en dicho procesador:
a. IR (“Instruction Record” Registro de Instrucción)
b. PC (“Program Counter” Contador de Programa)
c. SP (“Stack Pointer” Puntero a la cima de la Pila)
d. En cualquiera de los anteriores.
e. En ninguno de los anteriores
¿Cuál o cuáles de los siguientes identificadores son válidos en lenguaje C?
a. E+23
b. DOS PI
c. 30Junio
d. real
e. false
f. array
g. nota.primera
h. tipo_vector
i. double
j. speed
k. Ninguno de los
anteriores es válido
En lenguaje C, ¿qué instrucción/instrucciones de las siguientes utilizaría para escribir en pantalla un número real
de doble precisión almacenado en la variable x, en un campo de tamaño 10 a partir de la posición actual del cursor,
justificado a la derecha y con 2 cifras decimales?
a. printf("%10.2d", x);
b. printf("%13.2d", x);
c. printf("%10.2f", x);
d. printf("%13.2f", x);
e. printf("%10.2r", x);
f. printf("%13.2r", x);
g. printf("%10.2lr", x);
h. printf("%13.2lr", x);
i. printf("%-10.2lr", x);
j. printf("%-13.2lr", x);
k. Ninguna de las
anteriores
Dado el siguiente programa en lenguaje C, señale la afirmación o afirmaciones correctas:
a. El programa lee por teclado dos números reales y
luego imprime su diferencia en valor absoluto
b. El programa lee por teclado dos números reales y
luego siempre imprime 0.00 de distancia
c. Error de compilación: falta la librería math.h
d. Error de compilación: falta un ; tras llave de cierre }
e. Error en tiempo de ejecución: a y b tendrían que
haberse declarado como reales en doble precisión
f. Todas las afirmaciones anteriores son incorrectas
#include <stdio.h>
#include <stdlib.h>
int main(void){
float a,b;
printf("Introduzca posición 1: ");
scanf(" %f", &a);
printf("Introduzca posicion 2: ");
scanf(" %f",&b);
printf("Distancia: %.2f", abs(b-a));
return 0;
}
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Examen de programacion 2022 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) 6 de Junio 2022 APELLIDO/S: NOMBRE: DNI: GRUPO DOCENTE: GRUPO TRABAJO: REPOSITORIO TI: 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)

  • Un disco duro de un TeraByte (TB), ¿cuántos bits aproximadamente puede almacenar? a. 1.000.000.000. b. 1.000.000.000.000. c. 4.000.000.000. d. 4.000.000.000.000. e. 8.000.000.000. f. 8.000.000.000.000. g. Ninguna de las anteriores
  • Considerar la representación binaria sesgada (o desplazada) para los números enteros con signo, con un tamaño de representación de 6 dígitos. ¿Cuál sería la representación del número - 21? a. 110101 b. 101011 c. 101010 d. 100101 e. 010101 f. 001011 g. 001010 h. 000101 i. 100000 j. 011111 k. Ninguna de las anteriores
  • En cuál de los siguientes registros internos de la Unidad de Control de un procesador central (CPU) se almacena la dirección de memoria central de la siguiente instrucción a ejecutar en dicho procesador: a. IR (“Instruction Record” → Registro de Instrucción) b. PC (“Program Counter” → Contador de Programa) c. SP (“Stack Pointer” → Puntero a la cima de la Pila) d. En cualquiera de los anteriores. e. En ninguno de los anteriores
  • ¿Cuál o cuáles de los siguientes identificadores son válidos en lenguaje C? a. E+ 23 b. DOS PI c. 30Junio d. real e. false f. array g. nota.primera h. tipo_vector i. double j. speed k. Ninguno de los anteriores es válido
  • En lenguaje C, ¿qué instrucción/instrucciones de las siguientes utilizaría para escribir en pantalla un número real de doble precisión almacenado en la variable x , en un campo de tamaño 10 a partir de la posición actual del cursor, justificado a la derecha y con 2 cifras decimales? a. printf("%10.2d", x); b. printf("%13.2d", x); c. printf("%10.2f", x); d. printf("%13.2f", x); e. printf("%10.2r", x); f. printf("%13.2r", x); g. printf("%10.2lr", x); h. printf("%13.2lr", x); i. printf("%-10.2lr", x); j. printf("%-13.2lr", x); k. Ninguna de las anteriores
  • Dado el siguiente programa en lenguaje C, señale la afirmación o afirmaciones correctas: a. El programa lee por teclado dos números reales y luego imprime su diferencia en valor absoluto b. El programa lee por teclado dos números reales y luego siempre imprime 0.00 de distancia c. Error de compilación: falta la librería math.h d. Error de compilación: falta un ; tras llave de cierre } e. Error en tiempo de ejecución: a y b tendrían que haberse declarado como reales en doble precisión f. Todas las afirmaciones anteriores son incorrectas #include <stdio.h> #include <stdlib.h> int main(void){ float a,b; printf("Introduzca posición 1: "); scanf(" %f", &a); printf("Introduzca posicion 2: "); scanf(" %f",&b); printf("Distancia: %.2f", abs(b-a)); return 0; }
  • ¿Qué mensaje aparece en pantalla al ejecutar el siguiente programa en C? a. No forman un triangulo b. Area = 3 c. Area = 3. d. Area = 3. e. Area = 0. f. (No aparece nada en pantalla) g. Error de compilación h. Ninguna de las anteriores #include <stdio.h> #include <math.h> int main(){ double a=2.0,b=3.0,c=5.1,area,sp; if((a>b+c)&&(b>a+c)&&(c>a+b)) printf("No forman un triangulo"); else{ sp=(a+b+c)/2.0; area=sqrt((sp-a)(sp-b)(sp-c)); printf("Area = %.2f\n",area); } 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) f. Error de compilación g. Error de ejecución #include <stdio.h> int main(void) { float 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; }
  • Indicar el resultado del siguiente programa en C: a. Lee por teclado un número real en doble precisión en el intervalo [10,20] y lo escribe a continuación en pantalla con tres cifras decimales. b. Lee por teclado un número real en doble precisión en el intervalo (10,20) y lo escribe a continuación en pantalla con tres cifras decimales. c. Lee por teclado un número real y escribe a continuación: x=0. d. Error de compilación e. Error de ejecución (bucle infinito) #include <stdio.h> int main(){ double x; do{ printf("Numero [10,20]: "); scanf(" %lf",&x); }while((x>10)||(x<20)); printf("x=%.3f\n", x); return 0; }
  • Tras ejecutar el siguiente programa en C, ¿qué valores se muestran por pantalla? a. 0 b. 11 c. 11 - 5 - 2 - 1 d. 11 - 34 - 17 - 52 - 26 - 13 - 40 - 20 - 10 - 5 - 16 - 8 - 4 - 2 - 1 e. 11 - 33 - 18 - 42 - 21 - 10 - 30 - 22 - 9 - 5 - 4 - 8 - 6 - 3 - 2 - 1 f. 11 - 22 - 44 - 66 - 55 - 33 - 10 - 20 - 40 - 30 - 15 - 5 - 3 - 1 g. (No aparece nada en pantalla) h. Error de compilación i. Error de ejecución (bucle infinito) #include <stdio.h> int main(){ int n=11; printf("%d",n); while(n!=1){ if(n%2) n=3*n+1; else n=n/2; printf("-%d",n); } return 0; }
  • ¿Qué mensaje se presenta en pantalla cuando se ejecuta el siguiente programa? a. El valor de x es 500 b. El valor de x es 525 c. El valor de x es 550 d. El valor de x es 575 e. El valor de x es 600 f. El valor de x es 1000 g. (No aparece nada en pantalla) h. Error de compilación i. Error de ejecución (bucle infinito) #include <stdio.h> int main(void) { float x=0.0; int i,j,k; for(i=1;i<=10;i++) for(j=1;j<=10;j++) for(k=j;k<=10;k++) x++; printf("El valor de x es %.0f",x); return 0; }

• 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. y=f(x,c,z); b. y=f(&x,&c,&z);

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

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

e. Todas las anteriores son incorrectas.

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


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

  • Indicar qué escribe en pantalla el siguiente programa al ejecutarlo: a. verdadero b. falso c. 0 d. 1 e. 1 0 1 0 1 0 f. 0 1 0 1 0 1 g. Error de compilación h. Error en tiempo de ejecución #include <stdio.h> int es_par(int n); int es_impar(int n); int main(){ printf(" %d" , es_impar(6)); return 0; } int es_par(int n){ if(n) return(es_impar(n-1)); else return 1; } int es_impar(int n){ if(n) return(es_par(n-1)); else return 0; }
  • Considere el siguiente prototipo de una función C: double f(double (*f)(double x),double x); ¿Cuál o cuáles de las siguientes instrucciones son correctas? a. printf(" Resultado= %f" ,f(sin,M_PI)); b. printf(" Longitud= %f" ,f(atan,1.0)); c. printf(" Longitud= %f" ,f(pow,5.0,4.0)); d. printf(" Longitud= %f" ,f(cos+sin,M_PI)); e. Ninguna de las anteriores
  • ¿Cuál (o cuáles) de las siguientes instrucciones escribe en pantalla un número real situado en la posición i-ésima de un “array” unidimensional de reales de doble precisión en C de nombre v? a. printf(" %.1f", *v+i); b. printf(" %.1f", *(v+i)); c. printf(" %.1f", v[i+1]); d. printf(" %.1f", &v[i]); e. Ninguna de las anteriores
  • Considerar el siguiente programa en C, e indicar qué resultado(s) aparecería en pantalla tras su ejecución: a. 1 - 3 - 5 2 8 - 7 4 b. 1 - 3 - 5 2 - 5 - 3 1 c. 4 - 7 8 2 - 5 - 3 1 d. 1 1 1 1 1 1 1 e. 4 4 4 4 4 4 4 f. Error de sintaxis (falta el prototipo de la función invertir ) g. Ninguna de las anteriores #include <stdio.h> #define MAX 100 typedef int tipo_vector[MAX]; void invertir(tipo_vector v, int n){ int i,x; for(i=0;i<n;++i){ x=v[i]; v[i]=v[n-i-1]; v[n-i-1]=x; } } int main(){ tipo_vector v={1,-3,-5,2,8,-7,4}; int n=7,i; for(i=0;i<n;++i) printf("%d ",v[i]); return 0; }
  • De las siguientes declaraciones de nuevos tipos de datos en C, indicar cuál o cuáles seleccionaría para representar la cantidad de masa vegetal en kg que hay en cada metro cúbico de un invernadero con forma rectangular y cubierta plana horizontal, cuyas dimensiones son 100 m de largo, 50 m de ancho y 5 m de alto: a. typedef double tipo[ 99 ][49][4]; b. typedef double tipo[ 49 ][99][4]; c. typedef double tipo[4][49][99]; d. typedef double tipo[ 100 ][50][5]; e. typedef double tipo[50][100][5]; f. typedef double tipo[5][50][100]; g. typedef double tipo[ 101 ][51][6]; h. typedef double tipo[ 51 ][101][6]; i. typedef double tipo[6][51][101]; j. Ninguna de las anteriores
  • ¿Cuál o cuáles de los siguientes fragmentos de código en C utilizaría para calcular la matriz traspuesta de una matriz dada? a. for(i=0;i<ca;++i) for(j=0;j<fa;++j) B[i][j]=A[j][i]; b. for(i=0;i<fa;++i) for(j=0;j<ca;++j) B[i][j]=A[j][i]; c. for(i=0;i<ca;++i) for(j=0;j<fa;++j) B[j][i]=A[i][j]; d. for(i=0;i<fa;++i) for(j=0;j<ca;++j) B[j][i]=A[i][j]; e. Ninguna de las anteriores #include <stdio.h> #define FIL 10 #define COL 10 typedef double array2d[FIL][COL]; void traspuesta(array2d A, int fa, int ca, array2d B, int *fb, int *cb){ int i,j; *cb=fa; fb=ca; / CODIGO A INSERTAR */ } int main(){ array2d A={{1,2,3},{4,5,6}}; array2d B; int fa=2, ca=3,fb,cb; traspuesta(A,fa,ca,B,&fb,&cb); …
  • Dada la función posicion en C, indicar qué resultado se escribe en pantalla al ejecutar el siguiente programa: a. - 1 b. 0 c. 1 d. 2 e. 3 f. 4 g. 5 h. 6 i. 7 j. 8 k. 9 l. 10 m. Error de compilación n. Ninguna de las anteriores #include <stdio.h> int posicion(char *cad, char c){ int pos=-1; int i=0; while(cad[i]!='\0'){ if(cad[i]==c){ pos=i; } i++; } return(pos); } int main(){ printf("%d",posicion("EJEMPLO DE", 'E')); return 0; }
  • ¿Qué diferencias existen entre los dos constructores de estructuras de datos struct y union del lenguaje C? a. No existe ninguna diferencia, ambos se utilizan para construir registros. b. struct se utiliza para construir registros planos (sin parte variante), mientras que union se utiliza para construir registros con parte variante. c. struct se utiliza para construir registros que tienen todos sus componentes del mismo tipo de datos, mientras que en el caso de union los componentes pueden ser de tipos de datos diferentes. d. Los componentes de las estructuras de datos que se construyen con struct se representan en MC en posiciones independientes del segmento de pila (“stack”), mientras que en el caso de union se representan en el segmento de “heap”, reservando el compilador memoria suficiente para todos ellos. e. Los componentes de las estructuras de datos que se construyen con struct se representan en MC en posiciones independientes, mientras que en el caso de union todos se representan en las mismas posiciones, reservando el compilador memoria suficiente para el mayor de todos ellos. f. Ninguna de las respuestas anteriores es correcta.
  • En lenguaje de programación C, la instrucción fopen("datos.txt","a"); , cuál o cuáles de las siguientes acciones realiza: a. Abre el archivo "datos.txt" situado en el directorio actual en modo lectura y devuelve un puntero FILE no nulo si la operación tiene éxito o bien un puntero NULL si la operación no tiene éxito (probablemente porque no existe el archivo). b. Abre el archivo "datos.txt" situado en el directorio actual en modo escritura y devuelve un puntero FILE no nulo si la operación tiene éxito o bien un puntero NULL si la operación no tiene éxito (probablemente porque no existe el archivo). c. Crea el archivo "datos.txt" situado en el directorio actual y lo abre seguidamente en modo escritura, devolviendo un puntero FILE no nulo. En caso de existir el archivo, se destruyen sus contenidos (sin avisar) y se crea vacío de contenidos. d. Abre el archivo "datos.txt" situado en el directorio actual en modo escritura y devuelve un puntero FILE no nulo si la operación tiene éxito. En el caso de no existir el archivo en el directorio actual, se crea previamente. e. No existe la función fopen en ninguna de las librerías estándar de C. f. Ninguna de las respuestas anteriores es correcta.
  • El archivo “datos.txt” situado en el directorio actual contiene las temperaturas máximas diarias registradas en una estación meteorológica a lo largo de un mes. Cuál o cuáles de los siguientes fragmentos de programa utilizaría para calcular correctamente la temperatura media de las máximas registrada en ese periodo: datos.txt={23.5 25.1 26.7 24.2 25.9 30.1 29.0 29.2 29.4 31.6 30.8 28.8 27.5 24.4 23.2 21.9 25.7 28.1 30.1 31.3 } a. fscanf(f," %f",x); while(!feof(f)){ suma+=x; n++; fscanf(f," %f",x); } b. while(!feof(f)){ fscanf(f," %f",&x); suma+=x; n++; } c. fscanf(" %f",&x); while(!feof(f)){ suma+=x; n++; fscanf(" %f",&x); } d. while(!feof(f)){ suma+=x; n++; fscanf(" %f",x); } e. Ninguna las anteriores
  • Tenemos un archivo de texto en el directorio actual llamado “temperatura.txt” conteniendo cada línea un registro de la temperatura medida en cada instante de tiempo con el siguiente formato: Hora (entero) y temperatura (real), ambos datos separados por al menos un espacio en blanco. Considerando las siguientes declaraciones, si queremos leer un registro del mismo, indicar qué instrucción o instrucciones son las correctas: a. fscanf(f, "%d %f", reg); b. fscanf(f, "%d %f", &reg); c. fscanf(f, "%d %f", reg.h,reg.t); d. fscanf(f, "%d %f", reg->h,reg->t); e. fscanf(f, "%d %f", &reg.h,&reg.t); f. fscanf(f, "%d %f", &reg->h,&reg->t); g. Ninguna de las anteriores es correcta #include <stdio.h> int main(){ FILE f; float x, suma=0; int n=0; if((f=fopen("datos.txt","r"))==NULL){ printf("Error al abrir archivo"); }else{ / FRAGMENTO DE PROGRAMA */ fclose(f); if(n){ printf("Media: %.1f\n",suma/n); }else{ printf("Sin datos\n"); } } return 0; } #include <stdio.h> typedef struct{ int h; float t; }tipo_reg; int main(){ FILE *f; tipo_reg reg; if((f=fopen("temperatura.txt","r"))!=NULL){ …