Fundamentos de Informática Departamento de Estadı́stica, I.O. y Computación Ingenierı́a Técnica Industrial - Electrónica Industrial Hoja de problemas Variables y Operadores 1. ¿Cuáles son los rangos de valores que pueden almacenar las siguientes dos variables si son almacenadas en 32 bits?. int entero; unsigned int positivo; 2. Explica la diferencia entre estas sentencias de asignación: ¿Cuál es el tipo de datos de la variable A en cada caso? A = B y A = ’B’ A = 7 y A = ’7’ 3. Para el siguiente código, indica cuáles son los valores que van a ser impresos en cada sentencia printf. int t; /* Esta variable es global */ { int t = 2; printf("%d\n", t); { printf("%d\n", t); t = 3; } printf("%d\n", t); /* B */ printf("%d\n", t); /* D */ /* A */ /* C */ } { } 1 4. Escribe las declaraciones apropiadas para almacenar los siguientes valores: a) El precio en euros de un objeto. b) El nombre de una asignatura. c) El número de páginas de un libro. d ) El sexo de una persona: Hombre / Mujer e) Un año. f ) Un número de teléfono. g) El DNI de una persona. h) Sı́ / No. 5. Dados a = 6 y b = 9 dos variables enteras, ¿cuál es el resultado de las siguientes expresiones?. Si el valor de a o b cambian, indicar también su nuevo valor. a) a | b b) a || b c) a & b d) a && b e) !(a + b) f) a% b g) b / a h) b% a i) a = b j) a = b = 5 k) ++a + b-- 6. Escribe una expresión en C que permita realizar la comparación con la variable caracter letra a) Comprobar si letra es un caracter alfabético o un dı́gito numérico. b) Comprobar si letra es cualquier caracter excepto un caracter alfabético o un dı́gito númerico. c) Comprobar si letra es cualquier caracter excepto un espacio (espacio, tabulador, etc.) o un dı́gito númerico. 7. Explica las diferencias entre las siguientes sentencias en C: a) j = i++; b) j = ++i; 2 c) d) j = i + 1; i += 1; ¿Con cuáles de las siguientes sentencias se obtiene el mismo resultado?. ¿Qué sentencias modifican el valor de i ?. ¿Cuáles modifican el de j ?. Si los valores iniciales de i y j son i = 1 y j = 0, ¿cuáles son sus valores después de ejecutar cada una de las sentencias de forma independiente?. ¿cuál es el valor de la variable result después de ejecutar las siguientes sentencias en C? result = b + 1 | c + a; result = b + 1 || c + a; 8. Declarar una estructura para representar el horario de un determinado tren cuyos campos son: a) Número: 6 dı́gitos. b) Origen: 25 caracteres. c) Destino: 25 caracteres. d ) Hora salida: HHMM. e) Hora llegada: HHMM. f ) Hora paso: HHMM. g) Número de vagones: 3 dı́gitos. En la estructura se emplea para los campos de hora una estructura auxiliar con dos campos HH (hora) y MM (minutos) con dos dı́gitos cada uno de ellos. 9. Consideremos una biblioteca compuesta únicamente por libros y revistas. En el catálogo figuran por cada libro o revista la siguiente información: a) Número de referencia: 6 dı́gitos. b) Tı́tulo: 30 caracteres. c) Nombre del autor: 20 caracteres. d ) Nombre del editor: 25 caracteres. e) Clase de publicación (Libro o Revista). f ) Año de publicación. g) Nombre de la revista: 20 caracteres. Definir un tipo de datos que represente la información que nos brinda el catálogo. 3 10. En una secretarı́a de un Centro Universitario se concede cita previa a 20 alumnos al dı́a para realizar su matrı́cula. Para cada alumno se almacena su nombre, apellidos, dni y el año de nacimiento. Escribir las declaraciones de variables apropiadas. 11. Se utiliza un array para almacenar descripciones de personas. Cada elemento del array es una estructura cuyos campos contienen información acerca de la altura, el peso, el color del cabello, el color de los ojos y el sexo. Escribir las declaraciones de variables apropiadas. 12. Se quiere almacenar el número de litros de lluvia que caen en una ciudad cada dı́a durante un año. Escribir la declaración de variable apropiada. ¿Y si se quiere almacenar el número de litros por dı́a en cada una de las Islas Canarias?, ¿cómo se modifica la declaración anterior?. 13. Una empresa quiere almacenar el número de artı́culos de cada tipo que vende cada dı́a de la semana. Teniendo en cuenta que vende 30 tipos distintos de artı́culos, escribir la declaración de variable apropiada. 14. Escribir un programa que lea 2 enteros, calcule su suma y la imprima por pantalla. 15. Escribir un programa que convierte un número dado de segundos en el equivalente de minutos y segundos. 16. Escribir un programa que lea dos enteros y calcule e imprima su producto, cociente y resto cuando el primero se divide por el segundo. 17. Una temperatura en grados centrı́grados se puede convertir a una temperatura equivalente Fahrenheit con la siguiente fórmula: f = (9/5) ∗ c + 32 donde c : temperatura en grados centı́grados y f : temperatura en grados fahrenheit Escribir un programa en C que lea una temperatura c (número decimal) y obtenga la temperatura f (número real). 18. Escribir un programa que lea 3 valores enteros, los almacene en un array, realice la suma de los tres valores y muestre el resultado por pantalla. 19. Escribir un programa que utilice la estructura realizada para representar el horario de un tren, lea los datos de un tren de teclado y posteriormente los muestre por pantalla. 4