Você está na página 1de 5

PROGRAMACIÓN 1 - TEST A

GRADO DE ING. SISTEMAS DE TELECOMUNICACIÓN

Curso 2016-2017 - 30 de Noviembre de 2016 - Control 1 - Temas 1-3

INSTRUCCIONES:

• Tiempo: 30 minutos
• Marca una sola respuesta por pregunta.
• Puntuación: 0.75 puntos.
• Respuesta correcta: +0,05 puntos; respuesta incorrecta: -0,025 puntos; respuesta nula: 0 puntos.
• ¡Las preguntas sin contestar o con más de una contestación son NULAS!
• Para anular una respuesta, poner un NO a su lado.

APELLIDOS Y NOMBRE:

PREGUNTAS:

1. Señala la afirmación correcta sobre los sistemas de bases de datos:

a. Una base de datos es un conjunto de programas escritos en un lenguaje de programación, que reciben
datos por teclado y escriben datos en pantalla.
b. C++ y SQL son dos ejemplos de lenguajes de definición y manipulación de datos.
c. Los sistemas de bases de datos son sistemas de definición, administración y manipulación de datos
relacionados entre sí.

(Solución: c)

2. El siguiente programa pretende escribir por pantalla la cadena de caracteres Hola mundo,
pero contiene un error en la cuarta línea. Indica cuál es el error y cómo solucionarlo.

#include <iostream>
using namespace std;
int main(){
cout << Hola mundo;
}

a. Hola mundo no ha sido declarada con antelación: deberíamos escribir char Hola mundo; antes de la
cuarta línea.
b. Hola mundo debería ir entre comillas dobles: "Hola mundo"
c. Hola mundo debería ir entre comillas simples: ’Hola mundo’

(Solución: b)

3. Indica qué saldría por pantalla al ejecutar el siguiente programa:

#include <iostream>
using namespace std;
int main(){
int a = 5, b = 2;
cout << a/b << " y " << a%b;
}

1
a. 2 y 1
b. 2.5 y 0
c. 0 y 5

(Solución: a)

4. ¿Qué instrucciones serían necesarias en la línea indicada en el siguiente programa para que
se intercambien los valores de las variables x e y leídos por teclado?

#include <iostream>
using namespace std;
int main(){
int x, y, aux;
cin >> x >> y;
// AQUÍ: intercambiar valores de x e y
cout << x << " y " << y << endl;
}

a. x = y; y = x
b. x = aux; aux = y; y = x;
c. aux = x; x = y; y = aux;

(Solución: c)

5. Una de las√dos raíces reales (raiz1) de la ecuación ax2 + bx + c = 0 puede calcularse como
b2 −4ac
raiz1 = −b+ 2a . Señala la expresión correcta en C++ para el cálculo de esta raíz.

a. raiz1 = (-b + sqrt(b*b - 4*a*c)) / (2.0 * a);


b. raiz1 = -b + sqrt(b*b - 4*a*c) / 2.0 * a;
c. raiz1 = (-b + sqrt(b*b - 4*a*c)) / 2.0 * a;

(Solución: a)

6. ¿Qué hace el siguiente programa cuando se introduce por teclado el carácter ’9’?

#include <iostream>
using namespace std;
int main(){
char car; cin >> car;
if (car >= '0' && car <= '9'){
cout << (10 * (int(car) - int('0')));
}
}

a. Escribe en pantalla el número 90.


b. No escribe nada en pantalla.
c. Escribe en pantalla el carácter 0.

(Solución: a)

7. ¿Qué escribe en pantalla el siguiente programa?

#include <iostream>
using namespace std;
int main(){
char d = 's';

2
switch(d){
case 's': cout << "sab ";
case 'd': cout << "dom ";
default: cout << "err";
}
}

a. sab
b. sab dom
c. sab dom err

(Solución: c)

8. ¿Qué hace el siguiente programa?

#include <iostream>
using namespace std;
int main(){
unsigned i = 1, j;
while (i <= 9){
j = 0;
while (j <= 9){
cout << i << j << ' '; j++;
}
i++;
}
}

a. Escribe en pantalla los 99 números naturales consecutivos del 1 al 99: 1 2 3...99.


b. Escribe en pantalla los 90 números naturales consecutivos del 10 al 99: 10 11 12...99.
c. Escribe en pantalla los 9 números naturales del 10 al 90, de diez en diez: 10 20 30...90.

(Solución: b)

9. Indica cuál sería el diseño correcto para un bucle for que escriba por pantalla los números
naturales pares menores que 100: 2 4 6...98

a. for (unsigned i = 2; i < 100; i+=2){cout << i << ’ ’;}


b. for (unsigned i = 2; i < 100; i++){cout << i << ’ ’; i+=2;}
c. for (unsigned i = 0; i < 100; i++){cout << i+2 << ’ ’;}

(Solución: a)

10. Indica cuál sería el diseño correcto de un bucle for para que equivalga al siguiente código:

int i = 100;
while (i >= 0){
cout << i << ' ';
i--;
}

a. for (int i = 0; i >= 100; i--){cout << i << ’ ’;}


b. for (int i = 100; i <= 0; i++){cout << i << ’ ’;}
c. for (int i = 100; i >= 0; i--){cout << i << ’ ’;}

(Solución: c)

3
11. Suponiendo que a y b son dos variables enteras, señala cuál de la siguientes sentencias podría
dar un error en tiempo de ejecución como consecuencia de una división por cero:

a. if ( (a != 0) && (b % a == 0) )
b. if ( (a == 0) || (b % a == 0) )
c. if ( (b % a == 0) && (a != 0) )

(Solución: c)

12. Dada la interfaz de la siguiente función, indica cuál sería la llamada correcta desde el algo-
ritmo principal, suponiendo que a, b y c están declaradas de tipo double.

double Calcular(double x, double y, double &z);

a. a = Calcular(1.0/2.0, Calcular(1.0,2.0,b), c);


b. Calcular(c, a, c*c);
c. b = Calcular(pow(a,2.0), sqrt(b), 0.5);

(Solución: a)

13. Dada la siguiente llamada a la función Calcular que se hace desde el main, señala cuál sería
la declaración correcta de la función Calcular.

...
// AQUÍ estaría la declaración de Calcular
int main(){
int a = 1, b = 2, c = 3;
if (Calcular (1.5, a, b*b, c)){ // Llamada a Calcular
...
}

a. bool Calcular(double &x, int &y, int &z, int &w);


b. void Calcular(int x, double &y, double z, double &w);
c. bool Calcular(double x, int &y, int z, int &w);

(Solución: c)

14. ¿Qué puede decirse sobre el siguiente programa?

#include <iostream>
using namespace std;
int i = 1;
void Uno(){i++; cout << i;}
int main(){
int i = 0; cout << i; Uno();
}

a. Que no compilaría porque se ha declarado una variable global.


b. Que podría compilar y sacaría por pantalla 02 cuando se ejecutara.
c. Que podría compilar y sacaría por pantalla 01 cuando se ejecutara.

(Solución: b)

15. ¿Qué puede decirse sobre el siguiente segmento de programa?

4
void potencia(double b, double e, double &r); // A
double potencia(double b, double e); // B
int main(){
double base = 10.0, expo = 2.0, resu;
potencia(base, expo, resu);
...
}
...

a. Que podría compilar y se haría una llamada al procedimiento A desde el main.


b. Que no compilaría porque se han declarado dos subalgoritmos con el mismo identificador potencia.
c. Que podría compilar y se haría una llamada a la función B desde el main.

(Solución: a)

16. Indica qué sacaría por pantalla el programa adjunto, dependiendo de la definición del
parámetro dato del procedimiento Incrementar.

#include <iostream>
using namespace std;
void Incrementar(/*PARÁMETRO dato*/ ){dato++;}
int main(){
int n = 0;
for (int i = 1; i <= 10; i++){Incrementar(n);}
cout << n << endl;
}

a. Si la definición del parámetro dato del procedimiento Incrementar fuese int dato, saldría 0.
b. Si la definición del parámetro dato del procedimiento Incrementar fuese int &dato, saldría 0.
c. Si la definición del parámetro dato del procedimiento Incrementar fuese int dato, saldría 10.

(Solución: a)

Você também pode gostar