Nombre - Departamento de Ingeniería Informática y Ciencias de la

Anuncio
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
Descargar