Genera 5 enteros aleatorios entre 1 y 100, y los muestra con el prefijo 20240042 para formar identificaciones de estudiantes.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TOTAL_IDS 5
int main() {
int num_aleatorio;
int iter = 0;
srand(time(NULL));
while (iter < TOTAL_IDS) {
num_aleatorio = 1 + rand() % 100;
printf("20240042%04d\n", num_aleatorio);
iter++;
}
return 0;
}
Expliccaiones:
- La línea 13 genera un entero aleatorio en el rango de 1 a 100.
%04dformatea la salida a 4 dígitos, rellenando con ceros a la izquierda si es necesario.srand(time(NULL))establece la semilla aleatoria con el tiempo actual, garantizando variabilidad entre ejecuciones; sin esto, la secuencia de números aleatorios sería idéntica cada vez.
Implementa una máquina expendedora de bebidas con un menú interactivo para múltiples compras.
#include <stdio.h>
int main() {
int seleccion, cantidad;
float costo_total, dinero_ingreso, devolucion;
int activo = 1;
while (activo) {
printf("\nMenú de Máquina Expendedora:\n");
printf("1. Bebida cola - 3 unidades/botella\n");
printf("2. Bebida limón - 3 unidades/botella\n");
printf("3. Jugo de naranja - 5 unidades/botella\n");
printf("4. Agua pura - 2 unidades/botella\n");
printf("0. Finalizar compra\n");
printf("Ingrese código de bebida: ");
scanf("%d", &seleccion);
if (seleccion == 0) {
activo = 0;
continue;
}
if (seleccion < 1 || seleccion > 4) {
printf("Código no válido, intente de nuevo.\n");
continue;
}
printf("Ingrese cantidad deseada: ");
scanf("%d", &cantidad);
if (cantidad <= 0) {
printf("Cantidad inválida, ingrese un valor positivo.\n");
continue;
}
switch (seleccion) {
case 1:
case 2:
costo_total = 3.0 * cantidad;
break;
case 3:
costo_total = 5.0 * cantidad;
break;
case 4:
costo_total = 2.0 * cantidad;
break;
}
printf("Ingrese monto a pagar: ");
scanf("%f", &dinero_ingreso);
devolucion = dinero_ingreso - costo_total;
printf("Costo total: %.2f unidades\n", costo_total);
printf("Cambio: %.2f unidades\n", devolucion);
}
printf("Gracias por su compra, hasta luego!\n");
return 0;
}
Preguntas:
- Problema 1: Al eliminar
costo_total = 0;, en compras sucesivas el costo se acumularía incorrectamente, ya que no se reinicia entre iteraciones. - Problema 2: La instrucción
continuesalta el resto del cuerpo del bucle y avanza a la siguiente iteración, útil para manejar entradas inválidas y repetir el proceso.
Simula un semáforo basado en la entrada de un carácter de color.
#include <stdio.h>
int main() {
char color;
while (scanf(" %c", &color) != EOF) {
switch (color) {
case 'r':
case 'R':
printf("¡Alto!\n");
break;
case 'v':
case 'V':
printf("Avanzar, avanzar, avanzar\n");
break;
case 'a':
case 'A':
printf("Esperar un momento\n");
break;
default:
if (color != '\n') {
printf("Algo anda mal...\n");
}
break;
}
}
return 0;
}
Rastrea los gastos diarios ingresados por el usuario hasta que se introduzca -1.
#include <stdio.h>
int main() {
double gasto, max_gasto = 0.0, min_gasto = 1000000.0, total = 0.0;
int num_gastos = 0;
printf("Ingrese gastos del día (-1 para terminar):\n");
while (1) {
scanf("%lf", &gasto);
if (gasto == -1.0) break;
if (gasto <= 0.0 || gasto > 20000.0) continue;
total += gasto;
if (gasto > max_gasto) max_gasto = gasto;
if (gasto < min_gasto) min_gasto = gasto;
num_gastos++;
}
if (num_gastos > 0) {
printf("Total gastado hoy: %.1f\n", total);
printf("Gasto máximo: %.1f\n", max_gasto);
printf("Gasto mínimo: %.1f\n", min_gasto);
}
return 0;
}
Clifica triángulos según las longitudes de sus lados ingresadas por el usuario.
#include <stdio.h>
int main() {
int a, b, c;
while (scanf("%d%d%d", &a, &b, &c) != EOF) {
if (a + b <= c || a + c <= b || b + c <= a) {
printf("No es un triángulo válido\n");
continue;
}
if (a == b && b == c) {
printf("Triángulo equilátero\n");
} else if (a == b || a == c || b == c) {
printf("Triángulo isósceles\n");
} else if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) {
printf("Triángulo rectángulo\n");
} else {
printf("Triángulo escaleno\n");
}
}
return 0;
}
Juego de adivinanza para determinar un día de suerte en abril con pistas.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int dia_magico = rand() % 30 + 1;
int intento, restantes = 3;
printf("Adivina tu día de suerte en abril de 2026\n");
printf("Tienes 3 intentos, ingresa un número (1-30): ");
while (restantes > 0) {
scanf("%d", &intento);
restantes--;
if (intento == dia_magico) {
printf("¡Correcto! :)\n");
break;
} else if (intento > dia_magico && restantes > 0) {
printf("Demasiado tarde, tu día está antes. Intenta de nuevo (1-30): ");
} else if (intento < dia_magico && restantes > 0) {
printf("Demasiado temprano, tu día aún no llega. Intenta de nuevo (1-30): ");
}
}
if (restantes == 0 && intento != dia_magico) {
printf("Sin oportunidades. Tu día de suerte es el %d de abril.\n", dia_magico);
}
return 0;
}