Documente Academic
Documente Profesional
Documente Cultură
Nivel 1
1. [pregunta_01.txt] Escribe un programa que te pida la edad y que te diga un saludo distinto dependiendo de
si eres niño, joven, adulto, mayor o muy mayor.
Solución:
int main ( ) {
int edad ;
c o u t << e n d l ;
c o u t << ” I n t r o d u c e tu edad : ” ;
c i n >> edad ;
c o u t << e n d l ;
i f ( edad <15){
c o u t << ” Eres un n i n o . ” ;
} e l s e i f ( edad < 30) {
c o u t << ” Eres un j o v e n . ” ;
} e l s e i f ( edad < 50) {
c o u t << ” Eres un a d u l t o . ” ;
} e l s e i f ( edad < 70) {
c o u t << ” Eres un mayor . ” ;
} else {
c o u t << ” Eres un muy mayor . ” ;
}
c o u t << e n d l ;
c o u t << e n d l ;
c o u t << e n d l ;
return 0 ;
}
2. [pregunta_02.txt] Escribe un programa que lea distancias hasta que lea un cero y que te muestre la suma de
todas ellas y la distancia media
Solución:
while (num != 0 ) {
Página 1 de 12
Preguntas varias. Nivel 1
c o u t << e n d l ;
c o u t << ”Numero : ” ;
c i n >> num ;
suma += num ;
c o n t a d o r ++;
}
media = ( f l o a t ) suma / c o n t a d o r ;
c o u t << ”Suma : ” << suma ;
c o u t << ” Media : ” << media ;
}
3. [pregunta_03.txt] Escribe un programa que contenga una función booleana. Esta función devolverá verdadero
si el entero que recibe es un número primo, y falso en caso contrario. Haz que aparezcan en pantalla los mil
primeros numeros primos.
Solución:
Página 2 de 12
Preguntas varias. Nivel 1
4. [pregunta_04.txt] Realiza un programa que acepte un año (numero) y que indique si es o no bisiesto. Los años
bisiestos son los divisibles por 4, excepto si son divisibles por 100, en ese caso solo son bisiestos si tambien son
divisibles por 400.
Solución:
5. [pregunta_05.txt] Realiza un programa que valide la fecha introducida (dia, mes y año), indicando si es o no
valida. En el caso de que la fecha no sea valida se debe indicar el motivo.
Solución:
Página 3 de 12
Preguntas varias. Nivel 1
i f ( f e c h a . anno < 0 ) {
c o u t << e n d l << ” El anno no e s c o r r e c t o . ” ;
correcto = false ;
} e l s e i f ( ( f e c h a . mes < 0 ) | | ( f e c h a . mes > 1 2 ) ) {
c o u t << e n d l << ” El mes no e s c o r r e c t o . ” ;
correcto = false ;
} else i f ( fecha . dia < 0) {
c o u t << e n d l << ” El d i a no e s c o r r e c t o . ” ;
correcto = false ;
} else {
switch ( f e c h a . mes ) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 1 0 :
case 1 2 :
i f ( fecha . dia > 31) {
c o u t << e n d l << ” El d i a no e s c o r r e c t o . ” ;
correcto = false ;
}
break ;
case 2 :
i f ( fecha . dia > 29) {
c o u t << e n d l << ” El d i a no e s c o r r e c t o . ” ;
correcto = false ;
} e l s e i f ( ( f e c h a . d i a == 2 9 ) &&(! e s B i s i e s t o ( f e c h a . anno ) ) ) {
c o u t << e n d l << ” El d i a no e s c o r r e c t o . ” ;
correcto = false ;
}
break ;
default :
i f ( f e c h a . d i a >30){
c o u t << e n d l << ” El d i a no e s c o r r e c t o . ” ;
correcto = false ;
}
}
}
c o u t << e n d l << e n d l ;
if ( correcto ) {
c o u t << e n d l << ” Fecha c o r r e c t a ” << e n d l ;
}
}
Página 4 de 12
Preguntas varias. Nivel 1
return b i s i e s t o ;
}
6. [pregunta_06.txt] Operador condicional. Realiza un programa que eleve al cuadrado un numero entero in-
troducido por el usuario. Se debe preservar el signo del numero (10 al cuadrado es 100 y -10 al cuadrado es
-100).
Solución:
i f (num < 0 ) {
c o u t << −1 ∗ num ∗ num ;
} else {
c o u t << num ∗ num ;
}
}
7. [pregunta_07.txt] Escribe un programa que calcule la potencia de dos numeros enteros dados por el usuario
(el exponente es siempre entero positivo).
Solución:
potencia = 1;
f or ( int i = 1 ; i <= exponente ; i ++){
p o t e n c i a ∗= b a s e ;
}
c o u t << ” P o t e n c i a : ” << p o t e n c i a ;
}
Página 5 de 12
Preguntas varias. Nivel 1
8. [pregunta_08.txt] Escribe un programa que contenga una función booleana. Esta función debe devolver ver-
dadero si el carácter que recibe es un punto o un carácter de final de interrogación o de exclamación; en caso
contrario debe devolver falso.
Solución:
bool e s T e r m i n a c i o n ( char c a r a c t e r ) {
bool t e r m i n a c i o n = f a l s e ;
i f ( ( c a r a c t e r == ’ . ’ ) | | ( c a r a c t e r == ’ ? ’ ) | | ( c a r a c t e r == ’ ! ’ ) ) {
t e r m i n a c i o n = true ;
}
return t e r m i n a c i o n ;
}
9. [pregunta_09.txt] Escribe un programa que acepte como entrada un número entero positivo de cinco dı́gitos,
lo separe en sus distintos dı́gitos y los imprima separándolos cada uno con tres espacios. (Puedes emplear los
operadores de división y de módulo.)
Solución:
10. [pregunta_10.txt] Usando las estructuras de selección: if, if/else realiza un programa que lea tres números
y visualice el mayor de ellos.
Página 6 de 12
Preguntas varias. Nivel 1
Solución:
max = num [ 0 ] ;
f or ( int i = 1 ; i < NUM MAX; i ++){
i f (max < num [ i ] ) {
max = num [ i ] ;
}
}
11. [pregunta_11.txt] Usando las estructuras de selección: if, if/else modifica el programa anterior para que
también visualice el menor.
Solución:
Página 7 de 12
Preguntas varias. Nivel 1
12. [pregunta_12.txt] Expresa la siguiente instrucción de salida usando la estructura de selección if/else
cout <<(grado >=60?” Aprobado ” : ” Suspenso ” ) ;
Solución:
13. [pregunta_13.txt] Usando la estructura de selección switch escribe un programa que lea del teclado el carácter
correspondiente a un determinado color (’ró ’R’para indicar rojo, ’vó ’V’para indicar verde, áó Á’para indicar
azul, y cualquier otro carácter para indicar negro) y visualice en la pantalla el nombre del color indicado por el
usuario.
Solución:
switch ( c o l o r ) {
case ’ a ’ :
case ’A ’ :
c o u t << ” a z u l ” ;
break ;
case ’ r ’ :
case ’R ’ :
c o u t << ” r o j o ” ;
break ;
case ’ v ’ :
case ’V ’ :
c o u t << ” v e r d e ” ;
break ;
default :
c o u t << ” c o l o r d e s c o n o c i d o . ” ;
}
}
14. [pregunta_14.txt] Usando la estructura de selección switch escribe un programa que indique si el carácter
introducido por el usuario es o no una vocal.
Página 8 de 12
Preguntas varias. Nivel 1
Solución:
switch ( c a r a c t e r ) {
case ’ a ’ :
case ’A ’ :
case ’ e ’ :
case ’E ’ :
case ’ i ’ :
case ’ I ’ :
case ’ o ’ :
case ’O ’ :
case ’ u ’ :
case ’U ’ :
c o u t << e n d l << ”una v o c a l ” ;
break ;
default :
c o u t << e n d l << ”no e s una v o c a l ” ;
}
}
15. [pregunta_15.txt] Usando la estructura de iteración for realiza un programa que calcule y visualice la tabla
de multiplicar para los diez primeros números.
Solución:
16. [pregunta_16.txt] Usando la estructura de iteración for escribe un programa que calcule la siguiente suma:
1/2 + 1/3 + 1/4 + ... + 1/50
Solución:
Página 9 de 12
Preguntas varias. Nivel 1
using namespace s t d ;
int main ( ) {
f l o a t suma = 0 . 0 ;
c o u t << e n d l << ”La suma de 1/2 + 1/3 + 1/4 + . . . + 1/50 e s : ” ;
f or ( int i = 2 ; i <=50; i ++) {
suma += ( f l o a t ) 1/ i ;
}
c o u t << e n d l << suma << e n d l ;
}
17. [pregunta_17.txt] Usando la estructura de iteración while escribe un programa que calcule la media de seis
números solicitados al usuario.
Solución:
i = 0;
while ( i < cantidadNumeros ) {
c o u t << e n d l << ”Numero ” << i +1 << ” : ” ;
c i n >> numero ;
media += numero ;
i ++;
}
media /= cantidadNumeros ;
c o u t << e n d l << ”La media e s : ” << media ;
c o u t << e n d l ;
}
18. [pregunta_18.txt] Realiza un programa que utilice bucles for para calcular la media de varias listas consec-
utivas de números, siendo introducido por el teclado tanto el número de listas como el número de elementos de
cada lista.
Solución:
Página 10 de 12
Preguntas varias. Nivel 1
c i n >> numNumeros ;
totalLista = 0;
f or ( int m = 0 ; m<numNumeros ; m++){
c i n >> numero ;
t o t a l L i s t a+=numero ;
}
m e d i a L i s t a = t o t a l L i s t a / numNumeros ;
t o t a l G e n e r a l+= m e d i a L i s t a ;
}
mediaGeneral = t o t a l G e n e r a l / numListas ;
c o u t << ”Numero de l i s t a s : ” << numListas << ” Media : ” << mediaGeneral<<
endl ;
}
19. [pregunta_19.txt] Utilizando la estructura de salto continue, escribe un programa que contabilice el número
de múltiplos de tres introducidos por el usuario hasta que este introduzca el valor 0
Solución:
do{
c o u t << e n d l << ” I n t r o d u c e numero ( 0 para t e r m i n a r ) : ” ;
c i n >> numero ;
i f ( numero %3 !=0) continue ;
c o n t a d o r++;
} while ( numero != 0 ) ;
20. [pregunta_20.txt] Usando la estructura de iteracion do/while y la sentencia continue, escribe un programa
que calcule la media de los números no negativos introducidos por el usuario hasta que éste introduzca el número
cero.
Solución:
Página 11 de 12
Preguntas varias. Nivel 1
} while ( numero != 0 ) ;
media /= c o n t a d o r ;
21. [pregunta_21.txt] Realiza un programa que calcule la distancia en kilómetros recorrida por un coche y su
velocidad media. Para ello, se deberá de introducir el punto kilométrico inicial y final junto con el tiempo (hora,
minuto y segundo) empleado.
Solución:
struct Tiempo {
int hora , minuto , segundo ;
} tiempo ;
float distanciaRecorrida ;
f l o a t segundosEmpleados ;
c o u t << ” K i l o m e t r o i n i c i a l : ” ;
c i n >> d i s t a n c i a . k i l o m e t r o I n i c i a l ;
c o u t << ” K i l o m e t r o f i n a l : ” ;
c i n >> d i s t a n c i a . k i l o m e t r o F i n a l ;
c o u t << ” J o r a s empleadas : ” ;
c i n >> tiempo . hora ;
c o u t << ” Minutos empleados : ” ;
c i n >> tiempo . minuto ;
c o u t << ” Segundos empleados : ” ;
c i n >> tiempo . segundo ;
distanciaRecorrida = distancia . kilometroFinal − distancia . kilometroInicial ;
c o u t << ” D i s t a n c i a r e c o r r i d a : ” << d i s t a n c i a R e c o r r i d a << ” km . ” ;
segundosEmpleados=tiempo . segundo + tiempo . minuto ∗ 60 + tiempo . hora ∗ 3 6 0 0 ;
c o u t << ” Segundos : ” << segundosEmpleados << ” s . ” ;
c o u t << ” Horas : ” << segundosEmpleados / 3600 << ” h o r a s . ” ;
c o u t << ” V e l o c i d a d : ”<<d i s t a n c i a R e c o r r i d a / ( segundosEmpleados / 3 6 0 0 )<<” km/h . ” ;
}
Página 12 de 12