Вы находитесь на странице: 1из 4

Nombre

y apellidos:

Examen de Informtica Primer Parcial


Q108-A108 (A)

Grupo:

N. Matrcula:

Ejercicio 1 (2.5 puntos, 20 minutos)


Escribir en el lugar reservado bajo cada programa lo que cada uno de ellos mostrara
exactamente en la pantalla. Si hubiese algn error, indicarlo brevemente.

#include <stdio.h>

#include <stdio.h>

struct hora
{
int h; int m;
};

void main(){

int main(void)
{
struct hora;
hora.h=3;hora.m=23;
printf("Hora:%d:%d",hora.h,hora.m);
}

int i=5, j=7, k=3, a=1, s1;


s1 = ((j/k)%2)+2;
s1 -= a;
s1 %= --i;
printf("s1=%d\n", s1);
}

Error: Falta definir una variable s1=1


del tipo struct hora
#include <stdio.h>
#include <math.h>
void main()
{
int i, s=0;
vector[4]={4,9,16};
for(i=1;i<=2;i++)
{
s=sqrt(vector[i]);
printf("%d ", s);
}
}

Error: falta el tipo de vector[4]


#include<stdio.h>
int main(void)
{
int i=0;
char var[]="Perro";
while(var[i]!= '\0')
{
printf("%c", var[i++]-1);
}
}

Odqqn

#include <stdio.h>
int main(void)
{
char verdadero = 0;
char falso = 12;
if (verdadero)
printf("%d\n", verdadero);
else
printf("Algo ha fallado!\n");
if (falso)
printf("Algo ha fallado!\n");
else
printf("%d\n", falso);
return 0;
}

Algo ha fallado!
Algo ha fallado!


Ejercicio 2 (2.5 puntos, 20 minutos)


Escribir un programa que pida un nmero al usuario (mayor que 1) y:
1. Devuelva el primer nmero de la sucesin de Fibonacci que sea mayor al nmero dado.
2. Devuelva el nmero ms cercano (ya sea mayor o menor al dado).

El nmero entero introducido por el teclado debe ser mayor que 1: el programa comprobar
esta condicin y pedir de nuevo el nmero si sta no se cumple.

Ejemplo:

>Introduzca un nmero (mayor que 1 ): -3
> Introduzca un nmero (mayor que 1 ): 6
Numero de Fibonacci: 5
> Introduzca un nmero (mayor que 1 ): 7
Numero de Fibonacci: 8

Nota.- La sucesin de Fibonacci comienza con los nmeros 1 y 1, y a partir de estos, cada
trmino es la suma de los dos anteriores.
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,

Solucin

#include <stdio.h>
void main()
{
int fib1=1;
int fib2=2;
int aux=0;
int n;
//BUCLE "CENTINELA"
do
{
printf("Introduzca n (mayor o igual que 1): ");
scanf("%d", &n);
}
while(n<1);
//BUCLE "PRINCIPAL"
for(int i=1;;i++)
{
aux=fib1;
fib1=fib2;
fib2+=aux;
if (fib2>n)
{
if ((fib2-n)<(n-fib1))
printf("Fib num=%d\n", fib2);
else printf("Fib num=%d\n", fib1);
break;
}
}
}


Ejercicio 3 (2,5 puntos, 25 minutos)
Se pide hacer un programa que lea una frase por teclado (mximo 100 caracteres) y una
palabra y diga:
1.
Si esa palabra se encuentra en la frase o no.
2.
El nmero de veces que esa palabra est en la frase.
Nota. No se permite el uso de la librera string.h

Solucin

#include <stdio.h>
void main()
{
char frase1[20], frase2[20];
int i=0, j=0, k, encontrado=0, numveces=0, longitud2=0;
printf("Introduzca la frase: ");
gets(frase1);
printf("Introduzca la palabra: ");
gets(frase2);
while(frase2[longitud2] != '\0')
{
longitud2++;
}
while (frase1[i]!='\0')
{
if (frase1[i]==frase2[0]) //Si coincide la 1 letra seguimos buscando
{
encontrado=1;
k=i; // k es un nuevo ndice para buscar a partir de i
j=0; // j es el ndice para recorrer frase2
while (frase2[j]!='\0')
{
if (frase1[k]!=frase2[j])
{
encontrado=0;
break;
}
j++;
k++;
}
if (j==longitud2)
{
numveces++;
}
}
i++;
}
if (encontrado) printf("\nEncontrado %d veces\n", numveces);
else printf("\nNo Encontrado\n");
}


Ejercicio 4 (2,5 puntos, 25 minutos)


En una biblioteca se quiere implementar un sistema de gestin de prstamos de libros. Para
ello se crea la siguiente estructura con los campos cdigo para almacenar el numero de
identificacin del libro y email para almacenar el email de la persona que lo tiene prestado:

struct Prestamo {

int codigo;

char email[20];
};

Se pide escribir un programa que:
1. Cree un vector de 100 Prestamo (llamado ListaPrestamos) y lo inicialice con 2 valores.
2. Permita al usuario introducir nuevos prstamos (todos los que quiera)
3. Permita al usuario buscar el cdigo del libro que tiene prestado una persona dado su
email. Si no hay ninguna persona con ese email en la ListaPrestamos el programa debe
indicarlo.

Nota: se puede usar la librera <string.h>

Solucin
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM_MAX_PRESTAMOS 100
struct Prestamo {
int codigo;
char email[20];
};
int main(){
struct Prestamo
ListaPrestamos[NUM_MAX_PRESTAMOS]={{1234,"pepe@upm.es"},{5445,"paco@upm.es"}};
char opcion='y', encontrado=0;
char emailbusqueda[50];
int index=1;
while(opcion!='n'){
index++;
printf("Introduzca codigo:");
scanf("%d",&ListaPrestamos[index].codigo);
printf("\nIntroduca email:");
gets(ListaPrestamos[index].email);
printf("\nIntroducir otro contacto(s/n)?\n");
scanf("%c",&opcion);
}
printf("Introduzca email de busqueda\n");
gets(emailbusqueda);
for(int i=0;i<NUM_MAX_PRESTAMOS; i++){
if (strcmp(ListaPrestamos[i].email,emailbusqueda)==0){
printf("Libro=%d\n",ListaPrestamos[i].codigo);
encontrado=1;
}
}
if (encontrado==0) printf("Email no encontrado\n");
}

Вам также может понравиться