Acerca de¶
Estos ejercicios están diseñados para afianzar los conceptos más fundamentales de la programación en C. A través de ellos, se practicará el uso de variables, la entrada y salida por consola, y la implementación de estructuras de control básicas (lazos y condicionales) para resolver problemas simples y generar secuencias numéricas.
Capítulos de Apunte Correspondientes¶
Cuestiones de Estilo Aplicables¶
Resolución mediante funciones: Según la Regla 0x2009h, la lógica principal que resuelve cada enunciado debe estar contenida en una función, incluso si no se especifica de forma explícitamente.
Separación de entrada/salida: De acuerdo con la Regla 0x2002h, las funciones no deben contener
printfoscanf, a menos que su propósito explícito sea interactuar con el usuario.Uso de llaves: Toda estructura de control debe utilizar llaves (
{}) según la Regla 0x1001h.Lazos: Según la Regla 0x1003h, se debe preferir el uso de lazos
forpara iteraciones con rango o contador definido, ywhilepara lazos controlados por condiciones lógicas.
Primeros Pasos y Salida Básica¶
Ejercicio 1.1 - Cuenta regresiva ⭐⭐☆☆☆¶
Este ejercicio consiste en implementar un programa que realice una cuenta
regresiva desde un número entero positivo N hasta 1, para finalmente imprimir
un mensaje de “¡Lanzamiento!”. El objetivo es practicar el uso de lazos y la
gestión de tiempos de ejecución simples.
Para que la cuenta no sea instantánea y se pueda percibir en tiempo real, se debe introducir una pausa de 1 segundo entre cada número impreso.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11ALGORITMO cuenta_regresiva ENTRADA: numero_inicio (entero) INICIO PARA i DESDE numero_inicio HASTA 1 CON PASO -1 HACER ESCRIBIR i, "..." ESPERAR 1 segundo FIN PARA ESCRIBIR "¡Lanzamiento!" FIN
Ejercicio 1.2 - ¡Hola mundo! ⭐⭐☆☆☆¶
El “Hola, mundo!” es el primer paso tradicional en el aprendizaje de un nuevo lenguaje de programación. El objetivo es escribir el programa más simple posible que produzca una salida visible en la pantalla, confirmando que el compilador y el entorno de desarrollo están configurados y funcionando correctamente.
Ayuda (pseudocódigo)
ALGORITMO hola_mundo
INICIO
ESCRIBIR "Hola, mundo!"
FINEjercicio 1.3 - Saludador ⭐⭐☆☆☆¶
Este ejercicio amplía el “Hola, mundo!” para que el programa interactúe con el usuario. Debe solicitarle su nombre y luego mostrar un saludo personalizado que lo incluya. Sirve para practicar la lectura de datos desde la entrada estándar.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10ALGORITMO saludador VARIABLES: nombre (cadena) INICIO ESCRIBIR "Por favor, ingresa tu nombre:" LEER nombre ESCRIBIR "Hola mundo, ", nombre, "!" FIN
Rangos y Secuencias¶
Ejercicio 1.4 - Pares en un rango ⭐⭐⭐☆☆¶
El programa debe ser capaz de identificar y mostrar todos los números pares que
existen dentro de un intervalo cerrado [n, m], donde los límites n y m son
proporcionados por el usuario.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10ALGORITMO pares_en_rango ENTRADA: n, m (enteros) INICIO PARA i DESDE n HASTA m HACER SI i MOD 2 == 0 ENTONCES ESCRIBIR i FIN SI FIN PARA FIN
Ejercicio 1.5 - Primeros N Impares ⭐⭐☆☆☆¶
Este ejercicio consiste en generar una secuencia de números impares, comenzando
desde 1, hasta alcanzar un total de N términos, donde N es un número
proporcionado por el usuario.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9ALGORITMO primeros_n_impares ENTRADA: n_terminos (entero) INICIO PARA k DESDE 1 HASTA n_terminos HACER impar = 2 * k - 1 ESCRIBIR impar FIN PARA FIN
Operaciones con Rangos Numéricos¶
Ejercicio 1.6 - Secuencia Ascendente ⭐⭐☆☆☆¶
El objetivo es mostrar una secuencia de números enteros que comienza en un
número n y termina justo antes de un número m. Esto corresponde al intervalo
matemático [n, m).
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8ALGORITMO secuencia_ascendente ENTRADA: n, m (enteros) INICIO PARA i DESDE n HASTA m-1 HACER ESCRIBIR i FIN PARA FIN
Ejercicio 1.7 - Secuencia Descendente ⭐⭐☆☆☆¶
Similar al anterior, pero esta vez la secuencia debe ir en orden descendente. Se
parte de un número n y se retrocede hasta un número m, sin incluirlo. Esto
corresponde al intervalo (m, n].
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8ALGORITMO secuencia_descendente ENTRADA: n, m (enteros) INICIO PARA i DESDE n HASTA m+1 CON PASO -1 HACER ESCRIBIR i FIN PARA FIN
Ejercicio 1.8 - Sumatoria ⭐⭐☆☆☆¶
Calcular la suma de todos los números enteros en un rango cerrado [n, m]. Esto
es equivalente a la operación matemática .
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12ALGORITMO sumatoria_rango ENTRADA: n, m (enteros) VARIABLES: suma (entero) INICIO suma = 0 PARA i DESDE n HASTA m HACER suma = suma + i FIN PARA ESCRIBIR "La suma es: ", suma FIN
Ejercicio 1.9 - Suma de Cuadrados ⭐⭐☆☆☆¶
Calcular la suma de los cuadrados de todos los números enteros en un rango
cerrado [n, m]. La operación es .
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12ALGORITMO suma_cuadrados_rango ENTRADA: n, m (enteros) VARIABLES: suma_cuadrados (entero) INICIO suma_cuadrados = 0 PARA i DESDE n HASTA m HACER suma_cuadrados = suma_cuadrados + (i * i) FIN PARA ESCRIBIR "La suma de cuadrados es: ", suma_cuadrados FIN
Estructuras Condicionales¶
Ejercicio 1.10 - Par o Impar ⭐⭐☆☆☆¶
Este es un ejercicio fundamental de lógica condicional. El programa debe solicitar un número entero al usuario y determinar si es par (divisible por 2) o impar.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11ALGORITMO verificar_par_impar ENTRADA: numero (entero) INICIO LEER numero SI numero MOD 2 == 0 ENTONCES ESCRIBIR "El número ", numero, " es Par." SINO ESCRIBIR "El número ", numero, " es Impar." FIN SI FIN
Ejercicio 1.11 - Signo de un Número ⭐⭐☆☆☆¶
El programa debe clasificar un número real (de punto flotante) ingresado por el usuario en una de tres categorías: positivo, negativo o cero.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13ALGORITMO clasificar_signo ENTRADA: numero (real) INICIO LEER numero SI numero > 0 ENTONCES ESCRIBIR "El número es Positivo." SINO SI numero < 0 ENTONCES ESCRIBIR "El número es Negativo." SINO ESCRIBIR "El número es Cero." FIN SI FIN
Fórmulas Geométricas¶
Ejercicio 1.12 - Área de Triángulo (Base y Altura) ⭐⭐☆☆☆¶
Calcular el área de un triángulo a partir de las longitudes de su base y su altura. La fórmula es .
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11ALGORITMO area_triangulo_base_altura ENTRADA: base, altura (reales) VARIABLES: area (real) INICIO LEER base LEER altura area = (base * altura) / 2 ESCRIBIR "El área del triángulo es: ", area FIN
Ejercicio 1.13 - Área de Triángulo (Fórmula de Herón) ⭐⭐☆☆☆¶
Calcular el área de un triángulo conociendo únicamente la longitud de sus tres
lados (a, b, c). Para esto se utiliza la fórmula de Herón.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12ALGORITMO area_triangulo_heron ENTRADA: lado1, lado2, lado3 (reales) VARIABLES: s, area (reales) INICIO LEER lado1, lado2, lado3 // Opcional: Validar desigualdad triangular s = (lado1 + lado2 + lado3) / 2 area = RAIZ_CUADRADA(s * (s - lado1) * (s - lado2) * (s - lado3)) ESCRIBIR "El área del triángulo es: ", area FIN
Ejercicio 1.14 - Círculo ⭐⭐☆☆☆¶
Calcular el área y la circunferencia (perímetro) de un círculo a partir de su radio.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15ALGORITMO circulo_calculos ENTRADA: radio (real) CONSTANTES: PI = 3.14159 VARIABLES: area, circunferencia (reales) INICIO LEER radio area = PI * radio * radio circunferencia = 2 * PI * radio ESCRIBIR "Área: ", area ESCRIBIR "Circunferencia: ", circunferencia FIN
Ejercicio 1.15 - Trapecio ⭐⭐☆☆☆¶
Calcular el área de un trapecio dadas las longitudes de sus dos bases paralelas y su altura.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10ALGORITMO area_trapecio ENTRADA: base_mayor, base_menor, altura (reales) VARIABLES: area (real) INICIO LEER base_mayor, base_menor, altura area = ((base_mayor + base_menor) / 2) * altura ESCRIBIR "El área del trapecio es: ", area FIN
Ejercicio 1.16 - Polígono Regular ⭐⭐☆☆☆¶
Calcular el área de un polígono regular (lados y ángulos iguales) a partir del número de lados, la longitud de un lado y la apotema.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11ALGORITMO area_poligono_regular ENTRADA: num_lados (entero), long_lado, apotema (reales) VARIABLES: perimetro, area (reales) INICIO LEER num_lados, long_lado, apotema perimetro = num_lados * long_lado area = (perimetro * apotema) / 2 ESCRIBIR "El área del polígono es: ", area FIN
Ejercicio 1.17 - Rectángulo ⭐⭐☆☆☆¶
Calcular el área y el perímetro de un rectángulo dadas las longitudes de su largo y su ancho.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12ALGORITMO rectangulo_calculos ENTRADA: largo, ancho (reales) VARIABLES: area, perimetro (reales) INICIO LEER largo, ancho area = largo * ancho perimetro = 2 * (largo + ancho) ESCRIBIR "Área: ", area ESCRIBIR "Perímetro: ", perimetro FIN
Conversiones de Unidades¶
Ejercicio 1.18 - Temperaturas ⭐⭐☆☆☆¶
Crear un programa que pueda convertir temperaturas entre las escalas Celsius, Fahrenheit y Kelvin.
Ayuda (pseudocódigo) para celsius a fahrenheit.
1 2 3 4 5 6 7 8 9 10ALGORITMO convertir_c_a_f ENTRADA: grados_celsius (real) VARIABLES: grados_fahrenheit (real) INICIO LEER grados_celsius grados_fahrenheit = (grados_celsius * 9.0 / 5.0) + 32 ESCRIBIR grados_celsius, "°C son ", grados_fahrenheit, "°F" FIN
Ejercicio 1.19 - Ángulos a Segundos ⭐⭐☆☆☆¶
Convertir una medida de ángulo dada en formato sexagesimal (grados, minutos y segundos) a su valor total equivalente en segundos.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10ALGORITMO angulo_a_segundos ENTRADA: grados, minutos, segundos (enteros) VARIABLES: total_segundos (entero) INICIO LEER grados, minutos, segundos total_segundos = (grados * 3600) + (minutos * 60) + segundos ESCRIBIR "El total en segundos es: ", total_segundos FIN
Control de Flujo Avanzado¶
Ejercicio 1.20 - Tabla de Multiplicar ⭐⭐☆☆☆¶
El programa debe solicitar un número entero al usuario y mostrar su tabla de multiplicar, desde el 1 hasta el 10.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10ALGORITMO tabla_de_multiplicar ENTRADA: numero_base (entero) INICIO LEER numero_base PARA i DESDE 1 HASTA 10 HACER resultado = numero_base * i ESCRIBIR numero_base, " x ", i, " = ", resultado FIN PARA FIN
Ejercicio 1.21 - Patrón de Asteriscos (Triángulo) ⭐⭐☆☆☆¶
Implementar un programa que pida un número n e imprima un triángulo rectángulo
de n filas de altura, construido con asteriscos.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11ALGORITMO triangulo_asteriscos ENTRADA: n (entero) INICIO PARA fila DESDE 1 HASTA n HACER PARA columna DESDE 1 HASTA fila HACER ESCRIBIR "*" SIN SALTO DE LÍNEA FIN PARA ESCRIBIR SALTO DE LÍNEA FIN PARA FIN
Ejercicio 1.22 - Calculadora Básica ⭐⭐☆☆☆¶
Crear un programa que funcione como una calculadora simple. Debe solicitar al usuario dos números y un carácter que represente la operación aritmética a realizar (+, -, *, /).
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24ALGORITMO calculadora ENTRADA: num1, num2 (reales), operador (caracter) VARIABLES: resultado (real) INICIO LEER num1, operador, num2 SEGUN operador HACER CASO '+': resultado = num1 + num2 CASO '-': resultado = num1 - num2 CASO '*': resultado = num1 * num2 CASO '/': SI num2 != 0 ENTONCES resultado = num1 / num2 SINO ESCRIBIR "Error: División por cero." TERMINAR FIN SI CASO CONTRARIO: ESCRIBIR "Error: Operador no válido." TERMINAR FIN SEGUN ESCRIBIR "Resultado: ", resultado FIN
Ejercicio 1.23 - Adivina el Número ⭐⭐☆☆☆¶
Desarrollar un juego simple donde el programa genera un número secreto aleatorio y el usuario debe adivinarlo. El programa proporciona pistas para guiar al usuario.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18ALGORITMO adivina_el_numero VARIABLES: numero_secreto, intento_usuario (enteros) INICIO numero_secreto = generar_aleatorio(1, 100) HACER ESCRIBIR "Adivina el número (1-100):" LEER intento_usuario SI intento_usuario > numero_secreto ENTONCES ESCRIBIR "Muy alto." SINO SI intento_usuario < numero_secreto ENTONCES ESCRIBIR "Muy bajo." FIN SI MIENTRAS intento_usuario != numero_secreto ESCRIBIR "¡Felicidades! Adivinaste el número." FIN
Ejercicio 1.24 - Serie de Fibonacci (Iterativa) ⭐⭐☆☆☆¶
Generar y mostrar los primeros n términos de la serie de Fibonacci. En esta
serie, cada número es la suma de los dos anteriores, comenzando con 0 y 1.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19ALGORITMO fibonacci_iterativo ENTRADA: n (entero) VARIABLES: a, b, siguiente, i (enteros) INICIO SI n >= 1 ENTONCES ESCRIBIR 0 SI n >= 2 ENTONCES ESCRIBIR 1 a = 0 b = 1 PARA i DESDE 3 HASTA n HACER siguiente = a + b ESCRIBIR siguiente a = b b = siguiente FIN PARA FIN
Ejercicio 1.25 - Cálculo de Interés Simple ⭐☆☆☆☆¶
Implementar una función que calcule el monto final y el interés simple ganado a partir de un capital inicial, una tasa de interés anual y un período de tiempo en años.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15ALGORITMO interes_simple ENTRADA: capital, tasa_anual, anios (reales) VARIABLES: interes_ganado, monto_final (reales) INICIO LEER capital, tasa_anual, anios // Asegurarse que la tasa esté en formato decimal tasa_decimal = tasa_anual / 100 interes_ganado = capital * tasa_decimal * anios monto_final = capital + interes_ganado ESCRIBIR "Interés ganado: ", interes_ganado ESCRIBIR "Monto final: ", monto_final FIN
Ejercicio 1.26 - Índice de Masa Corporal (IMC) ⭐⭐☆☆☆¶
Escribir un programa que calcule el Índice de Masa Corporal (IMC) de una persona y lo clasifique según las categorías de la OMS.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20ALGORITMO calcular_imc ENTRADA: peso_kg, altura_m (reales) VARIABLES: imc (real) INICIO LEER peso_kg, altura_m imc = peso_kg / (altura_m * altura_m) ESCRIBIR "Su IMC es: ", imc SI imc < 18.5 ENTONCES ESCRIBIR "Categoría: Bajo peso" SINO SI imc < 25 ENTONCES ESCRIBIR "Categoría: Normal" SINO SI imc < 30 ENTONCES ESCRIBIR "Categoría: Sobrepeso" SINO ESCRIBIR "Categoría: Obesidad" FIN SI FIN
Ejercicio 1.27 - Días del Mes ⭐⭐☆☆☆¶
Crear un programa que, dado un mes (como número del 1 al 12) y un año, determine y muestre cuántos días tiene ese mes. Este ejercicio requiere manejar el caso especial de febrero en los años bisiestos.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25ALGORITMO dias_del_mes ENTRADA: mes, anio (enteros) VARIABLES: es_bisiesto (booleano) INICIO LEER mes, anio es_bisiesto = (anio MOD 4 == 0 Y anio MOD 100 != 0) O (anio MOD 400 == 0) SEGUN mes HACER CASO 1, 3, 5, 7, 8, 10, 12: ESCRIBIR "31 días" CASO 4, 6, 9, 11: ESCRIBIR "30 días" CASO 2: SI es_bisiesto ENTONCES ESCRIBIR "29 días" SINO ESCRIBIR "28 días" FIN SI CASO CONTRARIO: ESCRIBIR "Mes no válido." FIN SEGUN FIN
Ejercicio 1.28 - Máximo de Tres Números ⭐⭐☆☆☆¶
El objetivo es encontrar el valor más grande entre tres números enteros proporcionados por el usuario. Este ejercicio se centra en el uso de condicionales anidados o operadores lógicos para realizar comparaciones múltiples.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16ALGORITMO maximo_de_tres ENTRADA: a, b, c (enteros) VARIABLES: maximo (entero) INICIO LEER a, b, c maximo = a SI b > maximo ENTONCES maximo = b FIN SI SI c > maximo ENTONCES maximo = c FIN SI ESCRIBIR "El número más grande es: ", maximo FIN
Ejercicio 1.29 - Clasificación de Triángulo ⭐⭐☆☆☆¶
Dados los largos de tres lados, el programa debe determinar si pueden formar un triángulo válido y, en caso afirmativo, clasificarlo como equilátero (todos los lados iguales), isósceles (dos lados iguales) o escaleno (todos los lados diferentes).
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17ALGORITMO clasificar_triangulo ENTRADA: a, b, c (reales) INICIO LEER a, b, c SI (a+b > c) Y (a+c > b) Y (b+c > a) ENTONCES SI a == b Y b == c ENTONCES ESCRIBIR "Es un triángulo Equilátero." SINO SI a == b O b == c O a == c ENTONCES ESCRIBIR "Es un triángulo Isósceles." SINO ESCRIBIR "Es un triángulo Escaleno." FIN SI SINO ESCRIBIR "Los lados no forman un triángulo válido." FIN SI FIN
Ejercicio 1.30 - Desglose de Billetes ⭐⭐☆☆☆¶
Dado un monto de dinero entero, el programa debe calcular la cantidad mínima de billetes de distintas denominaciones para representar dicho monto.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17ALGORITMO desglose_billetes ENTRADA: monto (entero) VARIABLES: cantidad_billetes (entero) INICIO LEER monto denominaciones = [1000, 500, 200, 100, 50, 20, 10] PARA cada d EN denominaciones HACER cantidad_billetes = monto / d SI cantidad_billetes > 0 ENTONCES ESCRIBIR cantidad_billetes, " billete(s) de ", d FIN SI monto = monto MOD d FIN PARA FIN
Ejercicio 1.31 - Piedra, Papel o Tijera ⭐⭐☆☆☆¶
Implementar el clásico juego de Piedra, Papel o Tijera para que un usuario juegue una partida contra la computadora.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19ALGORITMO piedra_papel_tijera VARIABLES: eleccion_usuario, eleccion_pc (entero) INICIO ESCRIBIR "Elige: 1-Piedra, 2-Papel, 3-Tijera" LEER eleccion_usuario eleccion_pc = generar_aleatorio(1, 3) SI eleccion_usuario == eleccion_pc ENTONCES ESCRIBIR "Empate." SINO SI (eleccion_usuario == 1 Y eleccion_pc == 3) O \ (eleccion_usuario == 2 Y eleccion_pc == 1) O \ (eleccion_usuario == 3 Y eleccion_pc == 2) ENTONCES ESCRIBIR "¡Ganaste!" SINO ESCRIBIR "Perdiste." FIN SI FIN
Ejercicio 1.32 - Patrón de Pirámide ⭐⭐☆☆☆¶
Implementar un programa que pida un número n e imprima un triángulo de n
filas de altura, construido con asteriscos, centrado como una pirámide.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18ALGORITMO piramide_asteriscos ENTRADA: n (entero) INICIO PARA fila DESDE 1 HASTA n HACER // Imprimir espacios PARA espacio DESDE 1 HASTA n - fila HACER ESCRIBIR " " SIN SALTO DE LÍNEA FIN PARA // Imprimir asteriscos PARA asterisco DESDE 1 HASTA 2 * fila - 1 HACER ESCRIBIR "*" SIN SALTO DE LÍNEA FIN PARA ESCRIBIR SALTO DE LÍNEA FIN PARA FIN
Ejercicio 1.33 - Validación de Contraseña Simple ⭐☆☆☆☆¶
Crear un programa que solicite una contraseña al usuario y no le permita
continuar hasta que ingrese la contraseña correcta. Este ejercicio practica el
uso de lazos do-while y la comparación de cadenas.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14ALGORITMO validar_contrasena CONSTANTES: CLAVE_SECRETA = "password123" VARIABLES: intento (cadena) INICIO HACER ESCRIBIR "Ingrese la contraseña:" LEER intento MIENTRAS intento != CLAVE_SECRETA ESCRIBIR "Acceso concedido." FIN
Ejercicio 1.34 - Cajero Automático (Menú) ⭐⭐☆☆☆¶
Simular la interfaz de un menú de cajero automático. El programa debe mostrar una lista de opciones y ejecutar una acción simple según la elección del usuario, repitiendo el proceso hasta que el usuario decida salir.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31ALGORITMO cajero_automatico VARIABLES: saldo (real) opcion, monto (entero) INICIO saldo = 1000.0 HACER ESCRIBIR "1. Consultar Saldo" ESCRIBIR "2. Depositar" ESCRIBIR "3. Retirar" ESCRIBIR "4. Salir" LEER opcion SEGUN opcion HACER CASO 1: ESCRIBIR "Su saldo es: ", saldo CASO 2: ESCRIBIR "Ingrese monto a depositar:" LEER monto saldo = saldo + monto CASO 3: ESCRIBIR "Ingrese monto a retirar:" LEER monto SI monto <= saldo ENTONCES saldo = saldo - monto SINO ESCRIBIR "Saldo insuficiente." FIN SI FIN SEGUN MIENTRAS opcion != 4 FIN
Ejercicio 1.35 - Patrón de Rombo ⭐⭐☆☆☆¶
Implementar un programa que pida un número impar n e imprima un rombo de
asteriscos de n filas de altura.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14ALGORITMO rombo_asteriscos ENTRADA: n (entero impar) INICIO // Parte superior (pirámide) PARA fila DESDE 1 HASTA (n/2) + 1 HACER // Imprimir espacios y asteriscos como en el ejercicio de la pirámide FIN PARA // Parte inferior (pirámide invertida) PARA fila DESDE n/2 HASTA 1 CON PASO -1 HACER // Imprimir espacios y asteriscos de forma similar pero con el lazo decreciente FIN PARA FIN
Ejercicio 1.36 - Promedio de N Números ⭐⭐☆☆☆¶
Escribir un programa que sea flexible en la cantidad de números a promediar. Primero debe preguntar al usuario cuántos números va a ingresar y luego calcular el promedio de esa cantidad de números.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21ALGORITMO promedio_n_numeros VARIABLES: cantidad, i (enteros) numero, suma, promedio (reales) INICIO ESCRIBIR "¿Cuántos números desea promediar?" LEER cantidad suma = 0 PARA i DESDE 1 HASTA cantidad HACER ESCRIBIR "Ingrese el número ", i, ":" LEER numero suma = suma + numero FIN PARA SI cantidad > 0 ENTONCES promedio = suma / cantidad ESCRIBIR "El promedio es: ", promedio FIN SI FIN
Ejercicio 1.37 - Contador de Dígitos ⭐⭐⭐☆☆¶
Crear una función que reciba un número entero y devuelva la cantidad de dígitos que lo componen.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21ALGORITMO contar_digitos ENTRADA: numero (entero) VARIABLES: contador (entero) INICIO SI numero == 0 ENTONCES RETORNAR 1 FIN SI contador = 0 // Manejar números negativos numero_abs = VALOR_ABSOLUTO(numero) MIENTRAS numero_abs > 0 HACER numero_abs = numero_abs / 10 contador = contador + 1 FIN MIENTRAS RETORNAR contador FIN
Ejercicio 1.38 - Invertir un Número Entero ⭐⭐☆☆☆¶
Implementar una función que tome un número entero y devuelva otro número con los dígitos en orden inverso.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14ALGORITMO invertir_numero ENTRADA: numero (entero) VARIABLES: invertido, digito (enteros) INICIO invertido = 0 MIENTRAS numero != 0 HACER digito = numero MOD 10 invertido = (invertido * 10) + digito numero = numero / 10 FIN MIENTRAS RETORNAR invertido FIN
Ejercicio 1.39 - Potencia con Lazos ⭐⭐☆☆☆¶
Escribir una función que calcule base^exponente sin usar la función pow() de
la biblioteca math.h. Debe funcionar para exponentes enteros no negativos.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12ALGORITMO potencia_iterativa ENTRADA: base (real), exponente (entero) VARIABLES: resultado (real) INICIO resultado = 1.0 PARA i DESDE 1 HASTA exponente HACER resultado = resultado * base FIN PARA RETORNAR resultado FIN
Ejercicio 1.40 - Menú de Conversiones ⭐⭐☆☆☆¶
Crear un programa robusto que presente al usuario un menú con varias opciones de conversión de unidades (ej. Celsius a Fahrenheit, Metros a Pies, Kilogramos a Libras). El programa debe repetir el menú hasta que el usuario elija la opción de salir.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17ALGORITMO menu_conversiones VARIABLES: opcion (entero) INICIO HACER ESCRIBIR "1. Celsius a Fahrenheit" ESCRIBIR "2. Metros a Pies" ESCRIBIR "3. Salir" LEER opcion SEGUN opcion HACER CASO 1: llamar funcion_convertir_c_a_f() CASO 2: llamar funcion_convertir_m_a_pies() FIN SEGUN MIENTRAS opcion != 3 FIN
Ejercicio 1.41 - Validación de Fecha ⭐⭐☆☆☆¶
Crear una función que valide si una combinación de día, mes y año corresponde a una fecha real en el calendario gregoriano.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18FUNCION es_fecha_valida(dia, mes, anio) VARIABLES: dias_en_mes (entero) INICIO SI anio < 1 O mes < 1 O mes > 12 O dia < 1 O dia > 31 ENTONCES RETORNAR FALSO FIN SI // Lógica para dias_en_mes (similar al ejercicio 1.17) ... SI dia > dias_en_mes ENTONCES RETORNAR FALSO FIN SI RETORNAR VERDADERO FIN FUNCION
Ejercicio 1.42 - Dibujar un Cuadrado Hueco ⭐⭐☆☆☆¶
Pedir al usuario un número n y dibujar el contorno de un cuadrado de n x n
utilizando asteriscos. El interior del cuadrado debe estar vacío.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15ALGORITMO cuadrado_hueco ENTRADA: n (entero) INICIO PARA fila DESDE 1 HASTA n HACER PARA columna DESDE 1 HASTA n HACER SI fila == 1 O fila == n O columna == 1 O columna == n ENTONCES ESCRIBIR "*" SIN SALTO DE LÍNEA SINO ESCRIBIR " " SIN SALTO DE LÍNEA FIN SI FIN PARA ESCRIBIR SALTO DE LÍNEA FIN PARA FIN
Ejercicio 1.43 - Suma Separada de Pares e Impares ⭐⭐☆☆☆¶
Dado un rango de números [n, m], el programa debe calcular la suma de todos
los números pares y la suma de todos los números impares de forma independiente
y mostrar ambos resultados.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18ALGORITMO suma_pares_impares_rango ENTRADA: n, m (enteros) VARIABLES: suma_pares, suma_impares (enteros) INICIO suma_pares = 0 suma_impares = 0 PARA i DESDE n HASTA m HACER SI i MOD 2 == 0 ENTONCES suma_pares = suma_pares + i SINO suma_impares = suma_impares + i FIN SI FIN PARA ESCRIBIR "Suma de pares: ", suma_pares ESCRIBIR "Suma de impares: ", suma_impares FIN
Ejercicio 1.44 - Número de la Suerte ⭐⭐☆☆☆¶
Un número de la suerte es un entero con una cantidad par de dígitos, donde la suma de los dígitos de la primera mitad es igual a la suma de los dígitos de la segunda mitad. El programa debe verificar si un número dado es de la suerte.
Ayuda (pseudocódigo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31ALGORITMO numero_de_la_suerte ENTRADA: numero (entero) VARIABLES: total_digitos, mitad_digitos, i (enteros) primera_mitad, segunda_mitad (enteros) suma1, suma2 (enteros) INICIO LEER numero total_digitos = contar_digitos(numero) SI total_digitos MOD 2 != 0 ENTONCES ESCRIBIR "No es un número de la suerte (dígitos impares)." TERMINAR FIN SI mitad_digitos = total_digitos / 2 divisor = potencia(10, mitad_digitos) primera_mitad = numero / divisor segunda_mitad = numero MOD divisor suma1 = sumar_digitos(primera_mitad) suma2 = sumar_digitos(segunda_mitad) SI suma1 == suma2 ENTONCES ESCRIBIR "Es un número de la suerte." SINO ESCRIBIR "No es un número de la suerte." FIN SI FIN
Ejercicio 1.45 - Hola Mundo Personalizado ⭐☆☆☆☆¶
Escribí un programa que solicite tu nombre y te salude personalmente.
Ejemplo de ejecución:
Ingresá tu nombre: Juan
¡Hola, Juan! Bienvenido a la programación en C.Orientación:
Usá
printf()para mostrar mensajesUsá
scanf()para leer el nombre (máximo 50 caracteres)Recordá incluir
<stdio.h>
Ejercicio 1.46 - Calculadora Simple ⭐⭐☆☆☆¶
Escribí un programa que lea dos números enteros y muestre su suma, resta, producto y división.
Ejemplo de ejecución:
Primer número: 10
Segundo número: 3
Suma: 13
Resta: 7
Producto: 30
División: 3.33Orientación:
Declará variables para los dos números
Para la división con decimales, convertí al menos uno de los operandos a
doubleUsá
%.2fpara mostrar dos decimales
Ejercicio 1.47 - Conversor de Temperatura ⭐⭐☆☆☆¶
Creá un programa que convierta temperatura de Celsius a Fahrenheit y Kelvin.
Fórmulas:
Fahrenheit = Celsius × 9/5 + 32
Kelvin = Celsius + 273.15
Orientación:
Usá
doublepara almacenar temperaturasAplicá las fórmulas de conversión
Mostrá resultados con dos decimales
Ejercicio 1.48 - Área y Perímetro ⭐⭐☆☆☆¶
Escribí un programa que calcule el área y perímetro de un rectángulo dados su ancho y alto.
Orientación:
Área = ancho × alto
Perímetro = 2 × (ancho + alto)
Usá
doublepara las medidasVerificá que ancho y alto sean positivos
Ejercicio 1.49 - Promedio de Tres Números ⭐⭐☆☆☆¶
Calculá el promedio de tres números decimales ingresados por el usuario.
Orientación:
Leé tres números con
scanf("%lf", ...)Promedio = (a + b + c) / 3.0
Mostrá el resultado con dos decimales
Ejercicio 1.50 - Intercambio de Variables ⭐⭐☆☆☆¶
Leé dos números enteros y mostralos intercambiados (sin usar una tercera variable).
Ejemplo:
Ingresá a: 5
Ingresá b: 10
Después del intercambio:
a = 10
b = 5Orientación:
Usá operaciones aritméticas para intercambiar:
a = a + b;b = a - b;a = a - b;
Alternativamente, usá operadores bitwise XOR
Ejercicio 1.51 - Conversión de Unidades ⭐⭐☆☆☆¶
Convertí una distancia en metros a kilómetros, centímetros y milímetros.
Orientación:
1 metro = 0.001 km = 100 cm = 1000 mm
Usá constantes para los factores de conversión
Mostrá todas las conversiones
Ejercicio 1.52 - Cálculo de IMC ⭐⭐⭐☆☆¶
Calculá el Índice de Masa Corporal (IMC) dados peso (kg) y altura (m).
Fórmula: IMC = peso / (altura × altura)
Orientación:
Verificá que altura sea mayor que 0
Mostrá el IMC con dos decimales
Opcionalmente, mostrá la categoría (bajo peso, normal, sobrepeso)
Ejercicio 1.53 - Cantidad de Billetes ⭐⭐⭐☆☆¶
Dado un monto en pesos, calculá cuántos billetes de cada denominación (1000, 500, 200, 100, 50, 20, 10) se necesitan.
Ejemplo:
Monto: 1780
1 billete(s) de 1000
1 billete(s) de 500
1 billete(s) de 200
0 billete(s) de 100
1 billete(s) de 50
1 billete(s) de 20
1 billete(s) de 10Orientación:
Usá división entera y módulo
Empezá por el billete más grande
Restá el valor usado del monto
Ejercicio 1.54 - Segundos a Horas, Minutos y Segundos ⭐⭐⭐☆☆¶
Convertí una cantidad de segundos a formato HH:MM:SS.
Ejemplo:
Segundos: 3665
Resultado: 1:01:05Orientación:
Horas = segundos / 3600
Minutos = (segundos % 3600) / 60
Segundos restantes = segundos % 60
Mostrá con formato
printf("%d:%02d:%02d", h, m, s)
Ejercicio 1.55 - Dígitos de un Número ⭐⭐⭐☆☆¶
Leé un número de tres dígitos y mostrá cada dígito por separado.
Ejemplo:
Número: 457
Centenas: 4
Decenas: 5
Unidades: 7Orientación:
Centenas = numero / 100
Decenas = (numero / 10) % 10
Unidades = numero % 10
Ejercicio 1.56 - Precio con Descuento ⭐⭐⭐☆☆¶
Calculá el precio final de un producto aplicando un descuento porcentual.
Ejemplo:
Precio original: 1000
Descuento (%): 15
Precio final: 850.00Orientación:
Descuento = precio × (porcentaje / 100.0)
Precio final = precio - descuento
Mostrá ambos valores
Ejercicio 1.57 - Operaciones Bitwise ⭐⭐⭐☆☆¶
Leé dos números enteros y mostrá el resultado de todas las operaciones bitwise: AND, OR, XOR, NOT (del primero), shift left y shift right.
Orientación:
Usá operadores:
&,|,^,~,<<,>>Mostrá resultados en decimal y binario (opcional)
Explicá qué hace cada operación
Ejercicio 1.58 - Conversión de Base ⭐⭐⭐⭐☆¶
Convertí un número decimal a binario, octal y hexadecimal.
Orientación:
Usá especificadores de formato:
%d,%o,%xMostrá el número en las cuatro bases
Opcionalmente, implementá conversión manual con divisiones sucesivas
Ejercicio 1.59 - Área de Triángulo (Herón) ⭐⭐⭐⭐☆¶
Calculá el área de un triángulo usando la fórmula de Herón dados los tres lados.
Fórmula:
s = (a + b + c) / 2
área = √(s × (s-a) × (s-b) × (s-c))
Orientación:
Verificá que los lados formen un triángulo válido (a + b > c, etc.)
Usá
sqrt()de<math.h>Compilá con
-lmpara enlazar la biblioteca matemática
Ejercicio 1.60 - Ecuación Cuadrática ⭐⭐⭐⭐☆¶
Resolvé una ecuación cuadrática ax² + bx + c = 0, mostrando las raíces reales si existen.
Orientación:
Calculá el discriminante: Δ = b² - 4ac
Si Δ < 0: no hay raíces reales
Si Δ = 0: una raíz: x = -b / (2a)
Si Δ > 0: dos raíces: x = (-b ± √Δ) / (2a)
Usá
sqrt()de<math.h>
Ejercicio 1.61 - Interés Compuesto ⭐⭐⭐⭐☆¶
Calculá el monto final de una inversión con interés compuesto.
Fórmula: A = P × (1 + r/n)^(n×t)
Donde:
P = capital inicial
r = tasa de interés anual (decimal)
n = veces que se capitaliza por año
t = tiempo en años
Orientación:
Usá
pow()de<math.h>Mostrá el monto inicial, final y la ganancia
Compilá con
-lm
Ejercicio 1.62 - Conversión RGB a Hexadecimal ⭐⭐⭐⭐☆¶
Convertí un color RGB (rojo, verde, azul) a su representación hexadecimal.
Ejemplo:
Rojo (0-255): 255
Verde (0-255): 127
Azul (0-255): 80
Hexadecimal: #FF7F50Orientación:
Verificá que cada valor esté en rango 0-255
Usá
printf("%02X", valor)para formato hexadecimalCombiná los tres valores en formato #RRGGBB
Ejercicio 1.63 - Cálculo de Potencia (sin pow) ⭐⭐⭐⭐⭐¶
Calculá base^exponente usando solo multiplicaciones (exponente entero positivo).
Orientación:
Leé base (double) y exponente (int positivo)
Usá un lazo para multiplicar base por sí misma exponente veces
Considerá el caso especial cuando exponente = 0 (resultado = 1)
Spoiler: Este ejercicio requiere lazos, pero podés usar multiplicaciones repetidas en línea
Ejercicio 1.64 - Calculadora Científica Básica ⭐⭐⭐⭐⭐¶
Creá una calculadora que realice operaciones avanzadas: potencia, raíz cuadrada, seno, coseno, tangente, logaritmo.
Orientación:
Mostrá un menú de opciones
Leé la operación deseada y los operandos necesarios
Usá funciones de
<math.h>:pow(),sqrt(),sin(),cos(),tan(),log()Recordá que funciones trigonométricas usan radianes
Verificá casos especiales (raíz de negativo, log de 0 o negativo, etc.)
Compilá con
-lm
Notas Finales¶
Estas consignas cubren los conceptos fundamentales del Apunte 1: variables, tipos de datos, operadores aritméticos, bitwise, entrada/salida, y uso básico de bibliotecas estándar.