Examen de Septiembre de Fundamentos de la Programación

Anuncio
Examen de Septiembre de Fundamentos de la
Programación (Modelo 1)
5 de septiembre de 2008
1. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int x = 5;
printf ("%d ", x++);
printf ("%d", x);
}
a) 5 6 *
b) 6 6
c) 6 7
2. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int y = 5;
printf ("%d ", ++y);
printf ("%d\n", y++);
}
a) 5 6
b) 6 6 *
c) 6 7
1
3. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int i, v [] = {1, 2, 3, 4, 5};
for (i=4; i>0; i--)
v [i] = v [i-1];
for (i=0; i<5; i++)
printf ("%d ", v [i]);
}
a) 1 1 2 3 4 *
b) 5 5 4 3 2
c) 1 2 3 3 4
4. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
double resultado;
int
x=1, y=2;
resultado = 1 + x/y + x / (y + 1.5);
printf ("%.1lf", resultado);
}
a) 1.0
b) 1.3 *
c) 1.8
5. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int a, b;
int * p, * q;
a
b
p
q
=
=
=
=
1;
2;
&a;
&b;
*p = *q;
(*q)++;
printf ("%d %d", a, b);
}
a) 2 2
b) 2 3 *
c) 3 3
6. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int a, b;
int * q;
q = &b;
a = 1;
b = a;
*q = *q + 1;
printf ("%d %d", a, b);
}
a) 2 1
b) 2 2
c) 1 2 *
7. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int i, num [3] = {1, 2, 3};
int * p;
p = num + 1;
*p = p - num;
for (i=0; i<3; i++)
printf ("%d ", num [i]);
}
a) 1 1 3 *
b) 1 2 2
c) 1 2 2
8. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int varios (int x, int * y)
{
*y = *y + x;
x++;
return x;
}
void main ()
{
int x, y, z;
x = 1;
y = 1;
z = varios (x, &y);
y += z;
printf ("%d %d %d", x, y, z);
}
a) 1 2 2
b) 1 3 2
c) 1 4 2 *
9. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int recursiva (int n)
{
if (n > 0)
return n + recursiva (n-2);
else
return 2;
}
void main ()
{
printf ("%d\n", recursiva (6));
}
a) 10
b) 12
c) 14 *
10. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int contar (char cad [])
{
char * p;
int numero;
for (p=cad, numero=0; *p; p++)
numero += *p - ’b’;
return numero;
}
void main ()
{
char cadena [] = "abeja";
printf ("%d\n", contar (cadena));
}
a) 7
b) 9 *
c) 11
11. Las estructuras en C son tipos de datos cuyos campos
a) son del mismo tipo.
b) son de tipos diferentes.
c) pueden ser de distintos tipos. *
12. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int uno (int x)
{
return 3 + x%2;
}
void dos (int * p)
{
*p = 2 * *p + uno (*p);
}
void tres (int * x)
{
dos (x);
}
void main ()
{
int a = 3;
tres (&a);
printf ("%d", a);
}
a) 3
b) 6
c) 10 *
13. ¿Qué vale la variable b al final de main?
void interior (int x)
{
x -= 2;
}
void exterior (int * p)
{
interior (*p);
*p += 2;
}
void main ()
{
int b = 3;
exterior (&b);
}
a) 3
b) 5 *
c) 7
14. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int hola (int x, int y)
{
int i, val;
for (i=x, val=0; i>=1; i--)
while (i%2)
{
val += i;
i--;
}
return val;
}
void main ()
{
int a=3, b=7;
printf ("%d\n", hola (a, b));
}
a) 2
b) 3
c) 4 *
15. ¿Qué valen los campos nombre y telefono de la variable estructurada f al
final de main?
#include <stdio.h>
#include <string.h>
typedef struct
{
char nombre [20];
int telefono;
} Dato;
void rellenar (Dato d, char * nombre, int tel)
{
strcpy (d.nombre, nombre);
d.telefono = tel;
}
void main ()
{
Dato f;
strcpy (f.nombre, "Nadie");
f.telefono = -1;
rellenar (f, "Ana", 611223344);
}
a) Nadie -1 *
b) Nadie 611223344
c) Ana -1
16. Estudia las siguientes definiciones de tipos estructurados:
typedef struct
{
char
nombre [25];
char
apellido [25];
int
curso;
short convocatoria;
} Estudiante;
typedef struct
{
char
fecha [7];
double calificacion;
} Control;
typedef struct
{
Estudiante descripcion;
Control
final;
Control
parcial;
double
practicas;
} Datos;
y la siguiente declaración
Datos x [120];
¿Cuál de las siguientes instrucciones es correcta?
a) printf ("%lf", x->final.calificacion); *
b) scanf ("%s", x[3].parcial->fecha);
c) printf ("%lf", x->descripcion.convocatoria);
17. ¿Qué número entero representa la cadena 10101100 en complemento a 2?
a) -48
b) -84 *
c) -92
18. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int ando (int x, int y)
{
int a;
do
{
a = x--;
if (a%2)
a = y--;
}
while (a);
return y;
}
void main ()
{
int a=5, b=9;
printf ("%d\n", ando (a,b));
}
a) 4
b) 6 *
c) 8
19. ¿Qué número entero representa la cadena 00101100 en complemento a 2?
a) 44 *
b) 64
c) 84
20. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void resto (int x)
{
x %= 2;
printf ("%d\n", x);
}
void main ()
{
int a=2;
resto (a);
}
a) 0 *
b) 2
c) 4
21. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void main ()
{
int i, j;
int A [2][3] = {1,2,3,4,5,6};
int B [2][3] = {1,2,0,3,1,4};
int S [3] = {0,0,0};
for (i=0; i<2; i++)
for (j=0; j<3; j++)
S [j] += A [i][j] + B [i][j] - i;
printf ("%d %d %d\n", S [0], S [1], S [2]);
}
a) 6 8 12
b) 6 9 10
c) 8 9 12 *
22. Para el siguiente archivo datos.txt:
Alasesesdealalashermanas ...
¿Qué escribe el siguiente programa?
#include <stdio.h>
#include <stdlib.h>
int contar (char * archivo, char a, char b, char c)
{
FILE * f;
char uno=0, dos=0, tres=0;
int
contador=0, si, cierto;
f = fopen (archivo, "r");
while (!feof (f))
{
uno = dos;
dos = tres;
fscanf (f, "%c", &tres);
si = uno - a;
cierto = dos - b;
if (!si && !cierto && tres == c)
contador++;
}
fclose (f);
return contador;
}
void main ()
{
printf ("%d\n", contar ("datos.txt", ’a’, ’l’, ’a’));
}
a) 1
b) 2 *
c) 3
23. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int funcion (int a)
{
int i, j, k, suma;
for (i=0, suma=0; i<a; i++)
for (j=0; j<i; j++)
for (k=j; k>0; k--)
suma += i - j + k;
return suma;
}
void main ()
{
printf ("%d", funcion (4));
}
a) 8
b) 10 *
c) 12
24. ¿Qué escribe el siguiente programa?
#include <stdio.h>
void incrementar (double * p)
{
*p = 8.2;
p++;
}
void main ()
{
double notas [] = {7.5, 8.2, 6.5};
incrementar (notas);
printf ("%.1lf\n", *notas);
}
a) 8.2 *
b) 7.5
c) 6.5
25. ¿Qué escribe el siguiente programa?
#include <stdio.h>
typedef struct
{
int entero;
char caracter;
} Dato;
void asignar (Dato x, int * p)
{
x.entero = *p;
}
void main ()
{
Dato yo;
int x=5;
yo.entero = 2;
asignar (yo, &x);
printf ("%d\n", yo.entero);
}
a) 5
b) 3
c) 2 *
26. ¿Cuál de las siguientes afirmaciones es correcta?
a) Una función debe estar definida en el archivo en el que se llama.
b) Es muy conveniente que una función sea declarada en el archivo en
el que se llama. *
c) Una función puede definirse varias veces.
27. ¿Qué escribe el siguiente programa?
#include <stdio.h>
int calcular (char cad [], char c)
{
char * p = cad;
int valor;
while (*p)
{
valor = *p - c;
p++;
if (valor)
break;
}
return *p;
}
void main ()
{
char cadena [] = "hotel";
printf ("%c", calcular (cadena, ’r’));
}
a) h
b) o *
c) t
Descargar