CuestionesEjerciciosExamen - ELAI-UPM

Anuncio
ELAI-EUITI-UPM
Fundamentos de Informática
1. Cuestiones
Enunciado Febrero 04. Ejercicio Tercero.
(2 puntos – 30 minutos)
Resolver los siguientes problemas indicando, en la parte inferior, cual es el resultado de
cada programa. En caso de que el programa en cuestión tenga errores, sugerir la
solución correcta.
//a)
#include <stdio.h>
main( )
{
int x = 0, y = 0;
for(x = 6; x > 0; x -= 2)
for(y = 0; y < 2; y++)
printf("%d", x-y);
}
//b)
#include <stdio.h>
void fnx(int x)
{
if (x) printf("%d", x);
}
main( )
{
int i, a = 1234;
for(i = 0; i < 4; i++)
fnx(a = a/10);
}
//c)
#include <stdio.h>
//d)
#include <stdio.h>
main( )
{
int a[5] = {1, 2, 3, 4, 5};
int i = 0;
for (i = 0; i <= 5; i++)
printf("%d", a[i]);
}
main( )
{
double d = 1024.77;
int *p, a = 0;
p = &d;
a = *p;
printf("%d\n", a);
}
//e)
#include <stdio.h>
typedef union
{
int a;
float b;
} tdato;
main()
{
tdato s;
s.a = 5;
printf("%d %g\n", s.a, s.b);
}
Ejercicios resueltos de C. Diego Rodríguez-Losada
1
ELAI-EUITI-UPM
Fundamentos de Informática
Soluciones
a)
b)
c)
d)
e)
654321
123121
12345(error) Cambiar <= por <
Basura, error con tipos de punteros
5 Basura
Ejercicios resueltos de C. Diego Rodríguez-Losada
2
ELAI-EUITI-UPM
Fundamentos de Informática
2. Cuestiones
Enunciado. Sept 05 Ejercicio 2
2 puntos-20 minutos
Resolver los siguientes problemas, indicando cuál es el resultado del programa en cada
caso o si imprime basura o si se produce un error de compilación o de ejecución. Si es el
caso indicar la línea en la cual está localizada la sentencia que da error y su corrección
de forma breve y concisa.
1.
#include <stdio.h>
int main()
{
int vector[5]={10, 20, 30, 40, 50};
printf ("%d",*(vector+4));
}
2.
#include <stdio.h>
int main()
{
int cont=0;
char *ptr="antivirus";
while (*ptr++!='i');
printf ("%c",*ptr);
}
3.
#include <stdio.h>
int main()
{
int a=2,b=3,mayor;
mayor=2>3?2:3;
if (mayor=2)
printf ("%d",1);
printf ("%d",0);
}
4.
#include <stdio.h>
int main()
{
int u=4%2;
switch(u)
{
case 0: printf ("%d",u);
case 2: printf ("%d",u);
}
}
5.
#include <stdio.h>
int main()
{
int cont1=0,cont2=0;
for (cont1=-1;cont1>-5;cont1--);
for (cont2=1;cont2<=1;cont2=cont2+2)
printf ("%d",cont1+cont2);
}
Ejercicios resueltos de C. Diego Rodríguez-Losada
3
ELAI-EUITI-UPM
Fundamentos de Informática
Soluciones
a)
b)
c)
d)
e)
50
v
10
00
-4
Ejercicios resueltos de C. Diego Rodríguez-Losada
4
ELAI-EUITI-UPM
Fundamentos de Informática
3. Cuestiones
Junio 05. Ejercicio Segundo.
(30 minutos - 3 puntos)
Resolver los siguientes problemas, indicando cual es el resultado del programa en cada
caso o si imprime basura o si se produce un error de compilación o de ejecución. Si es
el caso indicar la línea en la cual está localizada la sentencia que da error y su
corrección de forma breve y concisa.
2/
1/
#include <stdio.h>
void main(void)
{
int x;
char tipo[]="CAMIONES";
for (x=1;x<5;++x)
printf("%c",*(tipo+x)+3);
#include <stdio.h>
void main(void)
{
int x;
char tex[]="OLIMPIA";
for (x=1; x<9;++x)
printf ("%c", tex[x]+x);
}
}
4/
3/
#include <stdio.h>
typedef struct
{
int a;
float b;
} tdato;
#include <stdio.h>
main()
{
int x = 1;
switch (x)
{
case 1:
x++;
case 2:
x+=5;
}
printf("%d\n" , x);
}
5/
main()
{
tdato s;
printf("%d %d\n", s.a, s.b);
}
6/
#include <stdio.h>
main()
{
int x=0;
for(x='a';x<='z';x+=10)
{
printf("%c\n",x);
}
#include <stdio.h>
main()
{
int a[5] ={ 10, 20, 30, 40, 50 };
int *p = a;
printf("%d\n", *(p)+2);
}
}
Ejercicios resueltos de C. Diego Rodríguez-Losada
5
ELAI-EUITI-UPM
Fundamentos de Informática
Soluciones
a)
b)
c)
d)
e)
MKPTNG y basura
DPLR
7
basura
a
k
u
f) 12
Ejercicios resueltos de C. Diego Rodríguez-Losada
6
ELAI-EUITI-UPM
Fundamentos de Informática
4. Ejercicio
Ejercicio Cuarto Junio 05.- (40 minutos - 3 puntos)
Dado un fichero de nombre variable, que contiene en cada registro dos valores enteros
separados por un espacio en blanco, obtener otro fichero (de nombre variable también)
en el que los valores se separen por una coma y se hayan eliminado los registros que
tuviesen simultáneamente los dos valores negativos.
Presentar, asimismo, un informe con el número de registros grabados y el de
eliminados.
#include <stdio.h>
Solucion
main()
{
char nombre_fich_ent[100];
char nombre_fich_sal[100];
FILE* f_ent;
FILE* f_sal;
int cont=0;
printf("Introduzca fichero de entrada: ");
scanf("%s",nombre_fich_ent);//gets(nombre_fich_ent);
printf("Introduzca fichero de salida: ");
scanf("%s",nombre_fich_sal);//gets(nombre_fich_sal);
f_ent=fopen(nombre_fich_ent,"r");
f_sal=fopen(nombre_fich_sal,"w");
while(1)
{
int a,b,r;
r=fscanf(f_ent,"%d %d",&a,&b);
if(r!=2)
break;
if(a>0 || b >0)
fprintf(f_sal,"%d,%d\n",a,b);
else
cont++;
}
printf("Se han eliminado %d\n",cont);
fclose(f_ent);
fclose(f_sal);
}
Ejercicios resueltos de C. Diego Rodríguez-Losada
7
ELAI-EUITI-UPM
Fundamentos de Informática
5. Ejercicio
Ejercicio Tercero Sept 05 (2 puntos – 30 minutos)
El objetivo del ejercicio es desarrollar un programa en C que realice las siguientes operaciones
de forma secuencial y en el mismo orden que se indica:
a) Solicitar al usuario 10 caracteres.
b) Solicitar al usuario 1 caracter que se encuentre en la lista anterior.
c) Buscar el número de veces que aparece el caracter del apartado 2 en el grupo de
números del apartado 1 y mostrar en pantalla este número de apariciones.
d) Sustituir en la lista del apartado 1, todas las apariciones del caracter del apartado 2, por el
caracter ‘?’ y mostrar la lista en pantalla.
e) Crear una nueva lista en la que se deben incluir, en el mismo orden, todos los caracteres de
la lista inicial exceptuando los de tipo ‘?’. Los huecos que queden al final deberán rellenarse
con un ‘.’. Mostrar la nueva lista en pantalla
Ejemplo:
a) Introduzca la lista de números:
asaecraeto
b) Introduzca el caracter a identificar:
a
c) Se han detectado 3 apariciones
d) Esta es la lista ahora:
?s?ecr?eto
d) Esta es la lista nueva:
secreto...
Completar el código que se proporciona a continuación para la ejecución del programa
especificado.
int ContarNumApariciones(char lista[10], char carElegido)
{
…
}
void main()
{
int numApariciones;
char lista[10];
char nuevaLista[10];
…
…
…
…
printf("Se han detectado %d apariciones \n\n",numApariciones);
…
…
…
printf("Esta es la lista ahora: \n\n");
…
…
…
printf("\n \n Esta es la lista nueva: \n\n");
…
…
…
}
Ejercicios resueltos de C. Diego Rodríguez-Losada
8
ELAI-EUITI-UPM
Fundamentos de Informática
Solucion
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int ContarNumApariciones(char lista[10],char carElegido)
{
int num=0;
int i=0;
while(lista[i]!=0)
{
if(lista[i]==carElegido)
num++;
i++;
}
return num;
}
main()
{
int num;
char car;
char lista[10];
int i=0;
printf("Introduzca lista: ");
gets(lista);
printf("Introduzca car: ");
car=getchar();
num=ContarNumApariciones(lista,car);
printf("Se han det %d\n",num);
while(lista[i]!=0)
{
if(lista[i]==car)
lista[i]='?';
i++;
}
printf("Esta es la lista ahora: %s\n",lista);
}
Ejercicios resueltos de C. Diego Rodríguez-Losada
9
Descargar