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 503201 (Lenguaje de Programación) Profesor: L. Ferres Certámen 2 21 de Julio de 2010 Duration: 3 horas No se permite el uso de ningún material extra. Este certamen consiste de 5 páginas y 8 problemas/preguntas. Si hay discrepancias entre éstos números y lo que se le entregó efectivatmente, 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 10 primeras las preguntas. El bonus da 10 puntos más a contar para el otro certámen. Página 1 de 5 page 2 1. [15] Responda las siguientes preguntas: (a) Cuál es la diferencia entre archivo binario y uno de texto? (b) En qué aspectos se debe fijar la/el programadora/o para trabajar con archivos binarios? (c) Cuál es la diferencia entre un arreglo de caracteres y un string? 2. [15] Cuál es la salida del siguiente código? Por qué? #include<stdio.h> int main() { char *p="hola"; printf("%c %c %c",*(p+3),(*p)+3,p[3]); printf("\n"); return 0; } 3. [10] Este código contiene (al menos) 2 errores, identifı́quelos e indique por qué no compila #include<stdio.h> typedef struct { int x; int y; } Point; int main() { Point coordinate; coordinate.x = 22; coordinate.y = 10; printf("%d %d\n", coordinate.x, coordinate.y); return 0; } 4. [15] Qué imprime el siguiente programa? y qué hace básicamente la función f?: #include <stdio.h> void f(int n); int main() { f(9); printf("\n"); return 0; } page 3 void f(int n){ if (n<=0){printf("0");return;} if (n==1){printf("1");return;} f(n/2); printf("%d",n%2); } 5. [15] Explique que es lo que muestra en pantalla el siguiente programa: #include <stdio.h> #include <stdlib.h> struct salmon { int codigo; float peso; char sexo; }; int main () { int x; struct salmon * temp=malloc(sizeof(struct salmon)); temp->codigo=123679; temp->peso=2.5; temp->sexo=’H’; printf("%d\n",&temp); return 0; } 6. [15] El siguiente programa tiene errores (alrededor de 13!). Estos errores pueden ser de Compilación o de Ejecución. Debe corregirlos para que imprima el contenido de la Lista. #include <stdio.h> /*Lo siguiente es un nodo en una lista ligada*/ struct animal { int id; char nombre[256]; char nombreLatin[256]; int numeroPatas; page 4 struct animal }; siguiente; int main () { struct animal temp=malloc(sizeof (struct animal)); struct animal lista; temp->id=1; temp->nombre="Perro"; temp->nombreLatin="Canis Lupus Familiaris"; temp->numeroPatas=3; lista=temp; lista->siguiente=malloc(sizeof (struct animal)); temp= lista->siguiente; temp->id=2; temp->nombre="Cien Pies"; temp->nombreLatin="Scolopendra Cingulata"; temp->numeroPatas=42; temp->siguiente=NULL; temp=lista; while (!temp) { printf("Id : %d\n",temp->id); printf("Nombre : %s\n",temp->nombre); printf("Nombre Latin: %s\n",temp->nombreLatin); printf("Numero Patas: %d\n\n",temp->numeroPatas); temp=temp->siguiente; } return 0; } 7. [10] Aburrida(o) de crear programas constructivos? Cree un programa que implemente una función que pida memoria recursivamente sin detenerse, usando la estructura dada: struct computador { page 5 int procesadores; int tamanoHDD; int memoria; float relojCPU; }; 8. [15] Qué imprime el siguiente código? Piensenlo bien... a mı́ me costó entenderlo. void makeitnull(char *pal){ pal=NULL; } int main(){ char *name; name="omo"; makeitnull(name); printf("%s",name); } Fin del certamen Total de páginas: 5 Total de puntos: 110