Práctica 1: Generación de Números Aleatorios
Código Fuente:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CANTIDAD 5
int main() {
int valor;
int indice;
srand(time(NULL)); // Semilla basada en tiempo actual del sistema
for(indice = 0; indice < CANTIDAD; ++indice) {
valor = rand() % 100 + 1;
printf("20490042%04d\n", valor);
}
return 0;
}
Respuestas a las preguntas:
- Pregunta 1: Se generan 5 números de estudiante aleatorios en el rango 204900420001 a 204900420100
- Pregunta 2: La función genera números aleatorios entre 1 y 100
- Pregunta 3: El formato %04d produce un número con ancho de 4 dígitos, completando con ceros a la izquierda si es necesario
- Pregunta 4: La semilla del generador se enicializa con el tiempo actual del sistema. Sin esta semilla, al ejeuctar múltiples veces se obtendría la misma secuencia de números
Práctica 2: Sistema de Máquina Expendedora
Código Fuente:
#include <stdio.h>
int main() {
int opcion, cantidad;
float precio_total = 0, monto_entregado, cambio;
while (1) {
printf("\nMenú de Máquina Expendedora:\n");
printf("1. Refresco - 3 unidades\n");
printf("2. Gaseosa - 3 unidades\n");
printf("3. Jugo de naranja - 5 unidades\n");
printf("4. Agua mineral - 2 unidades\n");
printf("0. Salir\n");
printf("Seleccione una bebida: ");
scanf("%d", &opcion);
if (opcion == 0)
break;
if (opcion < 1 || opcion > 4) {
printf("Opción inválida. Intente de nuevo.\n");
continue;
}
printf("Ingrese la cantidad: ");
scanf("%d", &cantidad);
if (cantidad < 0) {
printf("La cantidad no puede ser negativa.\n");
continue;
}
if(opcion == 1 || opcion == 2)
precio_total += 3 * cantidad;
else if(opcion == 3)
precio_total += 5 * cantidad;
else
precio_total += 2 * cantidad;
printf("Ingrese el monto a pagar: ");
scanf("%f", &monto_entregado);
cambio = monto_entregado - precio_total;
printf("Total a pagar: %.2f unidades\n", precio_total);
printf("Cambio: %.2f unidades\n", cambio);
precio_total = 0;
}
printf("Gracias por su compra. ¡Hasta luego!\n");
return 0;
}
Respuestas a las preguntas:
- Pregunta 1: El precio total no se reinicia entre compras, se acumula para la siguiente transacción
- Pregunta 2: La sentencia
breaktermina inmediatamente la ejecución del ciclo actual, saltando todo el código restante y pasando a la siguiente iteración del bucle while
Práctica 3: Control de Semáforo
Código Fuente:
#include <stdio.h>
int main() {
char color;
while (scanf(" %c", &color) != EOF) {
switch (color) {
case 'r':
printf("¡Alto!\n");
break;
case 'g':
printf("¡Adelante, adelante!\n");
break;
case 'y':
printf("Espere un momento\n");
break;
default:
printf("Algo está mal...\n");
break;
}
}
return 0;
}
Práctica 4: Registro de Gastos Diarios
Código Fuente:
#include <stdio.h>
int main() {
double gasto, suma = 0.0;
double gasto_maximo = 0.0, gasto_minimo = 20000.0;
int hay_datos = 0;
printf("Ingrese los gastos del día (termine con -1):\n");
while (1) {
scanf("%lf", &gasto);
if (gasto == -1) {
break;
}
if (gasto <= 0 || gasto > 20000) {
printf("¡Entrada inválida! El monto debe cumplir: 0 < monto <= 20000\n");
continue;
}
suma += gasto;
hay_datos = 1;
if (gasto > gasto_maximo) {
gasto_maximo = gasto;
}
if (gasto < gasto_minimo) {
gasto_minimo = gasto;
}
}
if (hay_datos) {
printf("Gasto total del día: %.1f\n", suma);
printf("Gasto máximo del día: %.1f\n", gasto_maximo);
printf("Gasto mínimo del día: %.1f\n", gasto_minimo);
} else {
printf("No hay registros válidos para hoy\n");
}
return 0;
}
Práctica 5: Clasificación de Triángulos
Código Fuente:
#include <stdio.h>
int main() {
int lado_a, lado_b, lado_c;
printf("Ingrese los tres lados del triángulo (enteros), CTRL+Z para terminar:\n");
while (scanf("%d %d %d", &lado_a, &lado_b, &lado_c) != EOF) {
if (lado_a <= 0 || lado_b <= 0 || lado_c <= 0 ||
(lado_a + lado_b <= lado_c) ||
(lado_a + lado_c <= lado_b) ||
(lado_b + lado_c <= lado_a)) {
printf("No puede formar un triángulo\n");
continue;
}
if (lado_a == lado_b && lado_b == lado_c) {
printf("Triángulo equilátero\n");
} else if (lado_a == lado_b || lado_a == lado_c || lado_b == lado_c) {
printf("Triángulo isósceles\n");
} else if ((lado_a*lado_a + lado_b*lado_b == lado_c*lado_c) ||
(lado_a*lado_a + lado_c*lado_c == lado_b*lado_b) ||
(lado_b*lado_b + lado_c*lado_c == lado_a*lado_a)) {
printf("Triángulo rectángulo\n");
} else {
printf("Triángulo escaleno\n");
}
}
return 0;
}
Práctica 6: Juego de Adivinanza
Código Fuente:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define INTENTOS 3
int main() {
int dia_fortunate;
int intento;
int contador;
srand(time(NULL));
dia_fortunate = rand() % 30 + 1;
printf("Adivina cuál es tu día de suerte en abril de 2026\n\n");
for(contador = 0; contador < INTENTOS; contador++) {
printf("¡Empieza! Tienes %d intentos,(adivina entre 1~30): ", INTENTOS - contador);
scanf("%d", &intento);
if(intento < 1 || intento > 30) {
printf("¡Entrada inválida! Ingresa un día entre 1 y 30\n");
contador--;
continue;
}
if(intento == dia_fortunate) {
printf("¡Lo adivinaste :)\n");
return 0;
} else if(intento > dia_fortunate) {
printf("Te equivocaste, tu día de suerte está antes\n");
} else {
printf("Te equivocaste, tu día de suerte aún no llega\n");
}
printf("\n");
}
printf("¡Se acabaron los intentos! Tu día de suerte es el %d\n", dia_fortunate);
return 0;
}