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

 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
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>

int main(void) {
    int opcion;
    double a, b;

    printf("=== Calculadora ===\n");
    printf("1. Suma\n");
    printf("2. Resta\n");
    printf("3. Multiplicacion\n");
    printf("4. Division\n");
    printf("Opcion: ");
    scanf("%d", &opcion);

    printf("Introduce dos numeros: ");
    scanf("%lf %lf", &a, &b);

    switch (opcion) {
        case 1:
            printf("%.2f + %.2f = %.2f\n", a, b, a + b);
            break;
        case 2:
            printf("%.2f - %.2f = %.2f\n", a, b, a - b);
            break;
        case 3:
            printf("%.2f * %.2f = %.2f\n", a, b, a * b);
            break;
        case 4:
            if (b == 0.0) {
                printf("Error: division por cero\n");
            } else {
                printf("%.2f / %.2f = %.2f\n", a, b, a / b);
            }
            break;
        default:
            printf("Opcion no valida\n");
            break;
    }

    return 0;
}

Resultado esperado

Con entradas 1, 3.0, 4.0:

1
2
3
4
5
6
7
8
=== Calculadora ===
1. Suma
2. Resta
3. Multiplicacion
4. Division
Opcion: 1
Introduce dos numeros: 3.0 4.0
3.00 + 4.00 = 7.00

Errores frecuentes

  • Olvidar el break al final de cada case: 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 default y dejar entradas inválidas sin gestionar.
  • Intentar usar switch con cadenas: solo funciona con tipos enteros (int, char, enum).

Cuándo usar switch en lugar de if-else

SituaciónPreferir
Comparar una variable contra muchos valores constantesswitch
Condiciones con rangos o expresiones complejasif-else
Comparar cadenasif-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.