Examen de Fundamentos de la Programación (Modelo 2) 27 de noviembre de 2007 1. Estudia con atención el siguiente programa y luego indica qué mensajes emite el compilador: #include <stdio.h> #include <math.h> void main () { int uno; double raiz; scanf ("%d", &uno); printf ("%lf\n", sqrt (uno)); } a) sqrt undefined b) ’uno’: undeclared identifier c) ’raiz’: unreferenced local variable * 2. ¿Qué numero entero representa la cadena 10011100 en notación de complemento a 2? a) -112 b) -100 * c) -102 3. La variable de una instrucción switch puede ser de tipos: a) int, long y char * b) int y double c) void, int y char 4. Un bucle es: 1 a) Un conjunto de instrucciones que se ejecutan dependiendo del resultado de la evaluación de una condición lógica. b) Un grupo de instrucciones que se repiten dependiendo del resultado de la evaluación de una condición lógica. * c) Un grupo de instrucciones que se repiten un número de veces que se fija durante la compilación del programa. 5. Conocer la precedencia de un operador nos permite: a) Saber la posición en que aparece dentro de una expresión b) Conocer el orden en que se evalua cuando aparece repetido varias veces en una misma expresión c) Saber si se evalua antes o después que otros operadores dentro de una misma expresión * 6. ¿Cuál de las siguientes cadenas representa al número 125 en notación binaria? a) 1111101 * b) 1011111 c) 1111110 7. Suma las siguientes cadenas en complemento a 2 e indica cuál es el resultado en el sistema decimal: 10011100 00111010 a) -41 b) 42 c) -42 * 8. Si peso es una variable de tipo double, ¿ves algún error en esta instrucción? scanf ("%.2lf", &peso); a) Sı́, sobra .2 en el formato * b) Sı́, sobra la l en el formato c) No 9. Estudia el siguiente programa e indica cuál es su salida cuando se teclea 21: #include <stdio.h> void main () { int num; scanf ("%d", &num); while (num > 0) { if (num % 2) num -= 2; else printf ("%d ", num); num--; } } a) 18 14 10 6 2 * b) 21 c) Ninguna de las otras dos 10. ¿Cuál de las siguientes afirmaciones es cierta? a) La negación lógica (!) tiene menos precedencia que la suma b) La disyunción lógica tiene más precedencia que la suma c) La conjunción lógica tiene menos precedencia que el producto * 11. ¿Cuál de las siguientes afirmaciones es cierta? a) La instrucción break termina la ejecución de la función main. b) La instrucción break termina la ejecución de un bucle while. * c) la instrucción break termina la ejecución de un programa. 12. Estudia el siguiente programa: #include <stdio.h> void main () { int i, num; double suma; printf ("Numero entero: "); scanf ("%d", &num); for (i=1, suma=0; i<=num; i++) suma += suma + 2*i - 1; printf ("%.0lf\n", suma); } ¿Qué escribe en la pantalla cuando se introduce el valor 5? a) 25 b) 83 * c) 37 13. ¿Qué escribe el siguiente programa si se teclea 5? #include <stdio.h> void main () { int num, resultado; scanf ("%d", &num); for (resultado=0; num; resultado++) num -= 2; printf ("%d\n", resultado); } a) 2 b) 3 c) Nada * 14. ¿Qué escribe el siguiente programa si se teclea 6? #include <stdio.h> void main () { int i, num, resultado=0; scanf ("%d", &num); while (num) { num -= 2; for (i=0; i<num; i++) resultado += i; } printf ("%d\n", resultado); } a) 6 b) 5 c) 7 * 15. ¿Cúal de las siguientes afirmaciones es correcta? a) El depurador es una herramienta que permite compilar un programa después de ejecutarlo. b) El depurador es una herramienta que permite ejecutar un programa instrucción a instrucción. * c) El depurador es una herramienta que permite intercambiar instrucciones durante la ejecución de un programa. 16. Observa los siguientes tipos de datos estructurados: #define MAX 500 typedef struct { char nombre [50]; char apellido [50]; int codigo; } Vendedor; typedef struct { char dia [20]; char mes [20]; int agno; } Fecha; typedef struct { char producto [5]; Vendedor empleado; Fecha fecha; int unidades; } Entrada; typedef struct { Entrada datos [MAX]; int numero; } Base; Dada la siguiente declaración Base datos [6]; ¿Cuál de las siguientes instrucciones es correcta? scanf ("%s", datos [1].datos [0].empleado[0].nombre); scanf ("%s", datos [0].datos [0].producto); scanf ("%s", datos [2].datos.producto); a) La segunda * b) La última c) La primera 17. ¿Qué escribe el siguiente programa si se teclea ebano? #include <stdio.h> void main () { int i, num; char cad [30]; scanf ("%s", cad); for (i=0, num=0; cad [i]; i++) if (cad [i] > cad [0]) num++; printf ("%d\n", num); } a) 3 b) 2 * c) 1