Switch case en C: ejercicio resuelto con menú interactivo
Switch case en C: ejercicio resuelto paso a paso
Si buscas un ejercicio de switch case en C resuelto, aquí tienes el patrón más habitual: un menú interactivo con varias opciones y un caso default para entradas inválidas.
El switch es la alternativa natural al if-else encadenado cuando se compara una misma variable entera (o carácter) contra múltiples valores constantes.
Enunciado
Escribe un programa que implemente una calculadora básica de consola. El usuario elige la operación mediante un menú numérico (1–4) e introduce dos operandos. El programa muestra el resultado y avisa si la operación no existe o si hay división por cero.
Solución en C
Resultado esperado
Con entradas 1, 3.0, 4.0:
Errores frecuentes
- Olvidar el
breakal final de cadacase: sin él, la ejecución cae al siguiente caso (fall-through). - Usar expresiones no constantes o flotantes como etiquetas de
case(no compila). - No incluir
defaulty dejar entradas inválidas sin gestionar. - Intentar usar
switchcon cadenas: solo funciona con tipos enteros (int,char,enum).
Cuándo usar switch en lugar de if-else
| Situación | Preferir |
|---|---|
| Comparar una variable contra muchos valores constantes | switch |
| Condiciones con rangos o expresiones complejas | if-else |
| Comparar cadenas | if-else con strcmp |
| Pocas ramas (2–3) | cualquiera |
Aplicación práctica
El switch aparece en:
- menús de consola y máquinas de estados,
- procesamiento de comandos o teclas,
- decodificación de códigos de error o códigos de operación.
Siguiente ejercicio recomendado
Práctica guiada y siguiente paso
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Qué es el fall-through en switch?
Si no hay break al final de un case, la ejecución continúa en el siguiente case aunque su etiqueta no coincida. Esto puede usarse intencionadamente para compartir código entre casos, pero normalmente es un bug.
¿Puede switch comparar cadenas en C?
No. switch solo funciona con tipos enteros (int, char, short, long, enum). Para comparar cadenas usa if-else con strcmp.
¿switch es más rápido que if-else?
En muchos compiladores el switch con muchos casos se compila como una tabla de saltos (jump table), lo que puede ser más rápido que una cadena de if-else. Para pocos casos la diferencia es insignificante.