Nombre: Apellidos: Número de matrı́cula: Firma: UNIVERSIDAD DE CONCEPCIÓN Departamento de Ingenierı́a Informática y Ciencias de la Computación Facultad de Ingenierı́a INF 503208 (Lenguaje de Programación I) Profesor: L. Ferres Certamen 1 Mayo de 2011 Duración: 2 horas No se permite el uso de ningún material extra. Este certamen consiste de 4 páginas y 10 problemas/preguntas. Si hay discrepancias entre éstos números y lo que se le entregó efectivamente, hágaselo saber al encargado del certamen. El número entre corchetes al empezar cada pregunta/problema, es la cantidad de puntos que vale esta pregunta. Conteste las 9 primeras preguntas. El bonus da 10 puntos más a contar para el otro certamen. Página 1 de 4 page 2 1. [10] Identifique 4 errores en el siguiente código (el programa busca los divisores de un número): #include <stdio> int main(){ int numero; for(i=0;i<numero;i++) { if((numero%i)!=0)printf("%d es divisor de %d\n",i,numero); } return 0; } 2. [10] Qué imprime este programa, una vez ejecutado? #include <stdio.h> int v=5; void func1 (int x) { int z = x; printf("%d\n", z*v); } int func2(int x) { x = v; return x; } int main () { int v; v=7; printf("%d\n", v); func1(v); v=func2(v); printf("%d\n", v); return 0; } page 3 3. [10] Ustedes lo pidieron! Este problema requiere el conocimiento previo de [^a], que scanea hasta encontrarse un caracter ‘a’. Si el input para el programa es: “Hola mundo!”, qué imprime? #include <stdio.h> int main(){ char str1[100],str2[100]; scanf("%[^a]%s",str1,str2); printf("%s %s\n",str1,str2); return 0; } 4. [10] Este programa tiene 4 errores de sintaxis. Encuéntrelos. El programa deberı́a imprimir “Hola,\tmundo”. #include <stdio.h> int main(){ char str[10] = "und"; printf("H"); printf("&c","o"); printf("%s",’la,\tm’); printf("%s",&str); printf("o\n"); return 0; } 5. [5] Entregue el output de este programa: #include <stdio.h> void func(int x){ printf("%d ",x/2); printf("%d ",x%2); if(x > 0) func(x/2); } int main(){ func(11); printf("\n"); return 0; } 6. [15] Conteste las siguientes preguntas: (a) Nombre a lo menos 5 nombres prohibidos para variables en C. page 4 (b) En una arquitectura de computador usual, cuánto espacio en la memoria utilizan las variables tipo: int, char, short? (c) El código asociado a la sentencia lógica if(valor) se ejecuta cuando valor es cierto. En C, todos los valores, incluyendo verdadero y falso se representa con números enteros. Cuáles son los valores convencionales de verdadero y falso en C? (d) La libreria standard input/output (stdio.h) es la más usada al momento de programar en C, pero no es la única. Nombre a lo menos otras 3 librerias que puedan ser utilizadas en C. (e) Cuál es la diferencia entre pasar una variable por valor o por referencia? 7. [10] Qué imprime el siguiente programa? #include <stdio.h> int main() { int a,b,c; a = 1; b = 2; c = 3; printf("%d %d %d\n",(a<b),(b==c),(c>a)); return 0; } 8. [20] Escriba un programa completo que obtenga un entero por consola, y que devuelva si el entero es positivo o negativo. Haga esto último escribiendo la función es pos(int i). 9. [10] Declare un arreglo de 10 elementos, almacene el ı́ndice mas 1 en cada uno de ellos, e imprmalos. 10. [10] [Bonus] Escriba un programa que imprima en consola un triángulo rectángulo isosceles de alto n, usando la función putchar. Por ejemplo, si n = 6, entonces el triángulo se verı́a ası́: * ** *** **** ***** ****** Fin del certamen Total de páginas: 4 Total de puntos: 110