Domina el control de flujo en C con la instrucción switch. Aprende a decidir qué código ejecutar con casos claros, a evitar múltiples else if, y a construir máquinas de estado eficientes. Además, refuerza buenas prácticas de indentación y solución de errores de compilación por llaves.
¿Qué es switch en C y cuándo usarlo?
La declaración switch permite tomar decisiones entre múltiples rutas usando valores constantes. Es ideal cuando la variable de control se compara contra números o cadenas fijas. Así evitas cadenas largas de if/else if y haces el flujo más legible.
Usa valores constantes por case: enteros o cadenas. No expresiones complejas.
Trabaja sobre una variable de control. Si hace “match”, ejecuta ese bloque.
Piensa en el switch como un “cubo de formas”: si la forma coincide, entra.
Excelente para máquinas de estado con pasos predefinidos.
El bloque que no coincide puede caer en default.
¿Cómo se estructura un switch con case, break y default?
Un switch agrupa rutas claras con case, y cada ruta termina con break para evitar caídas accidentales a otros casos. Default actúa como else.
#include<stdio.h>intmain(void){int option1 =0;// opción principalswitch(option1){case0:// Platzi bebidasprintf("Bienvenido a Platzi Store. Opción 0: bebidas.\n");int option2 =0;// submenú bebidasswitch(option2){case0:// Platzi cola ceroprintf("Usted eligió Platzi cola cero.\n");break;default:break;}break;case1:// Platzi comidas// Código de comidas.break;case2:// Platzi postres// Código de postres.break;default:// Opción no válida.break;}return0;}
switch (expresión): evalúa la variable de control.
case constante: ruta exacta por valor. Código específico.
break: indica que el caso terminó y sale del switch.
default: se ejecuta si ningún case coincide.
Puedes combinar con if o anidar otro switch cuando aplique.
¿Por qué la indentación importa en C aunque el compilador no la use?
Aunque al compilador “no le importa”, a ti sí. La indentación hace el código legible y reduce errores.
Muestra el alcance de cada bloque con claridad.
Evita confusiones en switch anidados y múltiples llaves.
Facilita encontrar dónde abre y cierra cada estructura.
¿Cómo crear un menú y una máquina de estados con switch?
Un patrón práctico: un switch principal define estados del sistema (por ejemplo, un menú). Cada case representa un estado o sección. Dentro, puedes abrir otro switch para subopciones.
Menú principal: 0 bebidas, 1 comidas, 2 postres.
Submenú bebidas: 0 Platzi cola cero, más opciones según necesites.
Máquinas de estado: cada case es un estado con acciones definidas.
// Fragmento ilustrativo del menú (salidas con printf)printf("Bienvenido a Platzi Store.\n");printf("Opción 0: Platzi bebidas.\n");printf("Opción 1: Platzi comidas.\n");printf("Opción 2: Platzi postres.\n");
Usa stdio.h para imprimir con printf.
Declara int option1 = 0; y int option2 = 0; según el menú.
Cierra siempre con return 0; en main.
¿Qué error común evitar con llaves y cómo corregirlo?
Un fallo típico es el error del compilador: "Expected declaration or statement". Suele aparecer por llaves mal cerradas.
Verifica que el switch interno no cierre el main por accidente.
Asegura la llave de cierre del switch grande antes de la llave final de main.
Indenta para ver qué llave cierra qué bloque.
¿Qué habilidades y conceptos te llevas?
Control de flujo con switch, case, break y default.
Diseño de máquinas de estado legibles y escalables.
Uso de valores constantes y variable de control.
Combinación con if/else y switch anidado cuando sea necesario.
Indentación como buena práctica de legibilidad.
Depuración de errores de compilación por llaves.
Elementos base: stdio.h, main, return, printf, variables int.
¿Qué otro menú o máquina de estado crearías con switch? Comparte tus ideas y casos de uso.
Como consejo para aquellos que no tienen buena indentación y la corrigen de forma manual, línea por línea, les recomiendo utilizar en Visual Studio Code la combinación de teclas Shift+Alt+F, la cual nos formatea el documento. Así no estarán corrigiendo línea por línea para indentar el código de manera ordenada.
Para los que se preguntan, que es la expresión del segundo switch:
switch ((X >= 0 ? 1 : 0) + (Y >= 0 ? 2 : 0))
Se lo conoce como operadores ternarios.
Funciona de forma sencilla como:
condición ? valor_true : valor_false
Seguimos con mis menu de carreras y cursos de platzi (un extracto)
#include <stdio.h>int opt1 =2;int opt2 =1;int main(void){// este programa genera menus de carrerasprintf("Bienvenido al menu de carreras\n");printf("1) Desarrollo e ingeniería\n");printf("2) Diseño y UX\n");printf("3) Marketing\n");printf("4) Producción audiovisual\n");switch(opt1){case1:printf("usted eligió la carrera de desarrollo e ingeniería\n");// este programa genera menus de cursosprintf("Bienvenido al menu de cursos\n");printf("1) Seguridad Informática\n");printf("2) Base de datos\n");printf("3) Fundamentos de programación\n");printf("4) Inteligencia Artificial y Matching Learnig\n");switch(opt2){case1:printf("usted eligió el curso de seguridad informática\n");break;case2:printf("usted eligió el curso de base de datos\n");break;case3:printf("usted eligió el curso de fundamentos de programación\n");break;case4:printf("usted eligió el curso de inteligencia artificial y matching learnig\n");break;default:printf("opción invalida\n");break;}break;case2:printf("usted eligió la carrera de diseño y UX\n");// este programa genera menus de cursosprintf("Bienvenido al menu de cursos\n");printf("1) Diseño gráfico\n");printf("2) Diseño de experiencia de usuario\n");printf("3) Diseño de interfaces\n");switch(opt2){case1:printf("usted eligió el curso de diseño gráfico\n");break;case2:printf("usted eligió el curso de diseño de experiencia de usuario\n");break;case3:printf("usted eligió el curso de diseño de interfaces\n");break;default:printf("opción invalida\n");break;}break;case3:printf("usted eligió la carrera de marketing\n");// este programa genera menus de cursosprintf("Bienvenido al menu de cursos\n");printf("1) Marketing Digital\n");printf("2) Marketing y Ventas\n");printf("3) Inbound Marketing\n");printf("4) Outbound Marketing\n");switch(opt2){case1:printf("usted eligió el curso de marketing digital\n");break;case2:printf("usted eligió el curso de marketing y venta\n");break;case3:printf("usted eligió el curso de inbound marketing\n");break;case4:printf("usted eligió el curso de outbound marketing\n");break;default:printf("opción invalida\n");break;}break;case4:printf("usted eligió la carrera de Producción audiovisual\n");// este programa genera menus de cursosprintf("Bienvenido al menu de cursos\n");printf("1) Producción audiovisual\n");printf("2) Periodismo digital\n");switch(opt2){case1:printf("usted eligió el curso de producción audiovisual\n");break;case2:printf("usted eligió el curso de periodismo digital\n");break;default:printf("opción invalida\n");break;}break;default:printf("opción invalida\n");break;}return(0);}```
Salida
Bienvenido al menu de carreras
Desarrollo e ingeniería
Diseño y UX
Marketing
Producción audiovisual
usted eligió la carrera de diseño y UX
Bienvenido al menu de cursos
Diseño gráfico
Diseño de experiencia de usuario
Diseño de interfaces
usted eligió el curso de diseño gráfico
Comparto el código completo. Reto a todo el que pase por esta clase a completar el código y compartirlo en esta sección.
.
¡La practica hace al maestro! ;)
#include<stdio.h>int opt1 =1;int opt2 =3;int main(void){printf("¡Bienvenido a PlatziStore!\nElige una opción para tu pedido:\n");printf(" - Opción 0 para PlatziBebidas\n");printf(" - Opción 1 para PlatziComidas\n");printf(" - Opción 2 para PlatziPostres\n");switch(opt1){case0:printf("Usted eligió la opción 0. Verá nuestro menú de bebidas. Elija una:\n");printf(" - Opción 0 para PlatziCola-0\n");printf(" - Opción 1 para PlatziCola-N\n");printf(" - Opción 2 para PlatziPiña-Colada\n");switch(opt2){case0:printf("Usted eligió una PlatziCola-0\n");break;case1:printf("Usted eligió una PlatziCola-N\n");break;case2:printf("Usted eligió una PlatziPiña-Colada\n");break;default:printf("Elija una opción válida, por favor\n");break;}break;case1:printf("Usted eligió la opción 1. Verá nuestro menú de alimentos. Elija una PlatziComida:\n");printf(" - Opción 0 para PlatziBurritos\n");printf(" - Opción 1 para PlatziPizza\n");printf(" - Opción 2 para PlatziMaster\n");switch(opt2){case0:printf("Usted eligió un PlatziBurritos\n");break;case1:printf("Usted eligió una PlatziPizza\n");break;case2:printf("Usted eligió una PlatziMaster\n");break;default:printf("Elija una opción válida, por favor\n");break;}break;case2:printf("Usted eligió la opción 2. Verá nuestro menú de pastres. Elija un PlatziPostre:\n");printf(" - Opción 0 para Platzi3Leches\n");printf(" - Opción 1 para PlatziBacano\n");printf(" - Opción 2 para PlatziRecargado\n");switch(opt2){case0:printf("Usted eligió un Platzi3Leches\n");break;case1:printf("Usted eligió un PlatziBacano\n");break;case2:printf("Usted eligió una PlatziRecargado\n");break;default:printf("Elija una opción válida, por favor\n");break;}break;default:printf("Elija una opción válida, por favor\n");}return0;}
En otros lenguajes directamente se desaconseja su uso. Python por ejemplo vivió mucho tiempo sin switch (se implementó a partir de la versión 3.10 con el nombre de match).
Dependiendo del problema, existen mejores formas de hacer las cosas. Mira este artículo, trata sobre C# pero los conceptos son útiles.
Uno de los principales uso del switch case es crear maquindas de estado, donde el codigo se comparta de manera diferentes según el estado.
También existen los switch entre rangos, como:
#include <stdio.h>#define Msg1printf("\nTu ciclo de vida es: \n");int age =99;int main(int argc,const char* argv[]){switch(age){case0...5:Msg1;printf("Primera Infancia\n");break;case6...11:Msg1;printf("Infancia\n");break;case12...18:Msg1;printf("Adolescencia\n");break;case19...26:Msg1;printf("Juventud\n");break;case27...59:Msg1;printf("Adultez\n");break;case60...125:Msg1;printf("Persona Mayor\n");break;default:printf("Valor incorrecto\n");break;}return0;}
O switch con múltiples condiciones, como:
#include <stdio.h>int X=0;int Y=-2;int main(int argc,const char* argv[]){switch((X>=0?1:0)+(Y>=0?2:0)){case0:printf("X e Y son menores que 0\n");break;case1:printf("X es mayor que 0, Y es menor que 0\n");break;case2:printf("X es menor que 0, Y es mayor que 0\n");break;case3:printf("X e Y son mayores que 0\n");break;}return0;}
int main (void)
{
//este programa genera menus de planetas
printf("Bienvenid@ \n");
printf("Opción 1 para Mercurio \n");
printf("Opción 2 para Venus \n");
printf("Opción 3 para Tierra \n");
printf("Opción 4 para Marte \n");
printf("Opción 5 para Júpiter \n");
printf("Opción 6 para Saturno \n");
printf("Opción 7 para Urano \n");
printf("Opción 8 para Neptuno \n");
printf("Opción 9 para Luna \n");
switch (opt1)
{
case 1:
printf("Usted eligió Mercurio");
//este programa genera menu de características
printf("Bienvenido a Mercurio\n");
printf("1) Quieres saber su tamaño?");
printf("2) Quieres saber su posición en el sistema solar?");
printf("3) Quieres saber si es habitable?");
switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case2:printf("Usted eligió Venus");//este programa genera menu de característicasprintf("Bienvenido a Venus\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case3:printf("Usted eligió Tierra");//este programa genera menu de característicasprintf("Bienvenido a Tierra\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case4:printf("Usted eligió Marte");//este programa genera menu de característicasprintf("Bienvenido a Marte\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case5:printf("Usted eligió Júpiter");//este programa genera menu de característicasprintf("Bienvenido a Júpiter\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case6:printf("Usted eligió Saturno");//este programa genera menu de característicasprintf("Bienvenido a Saturno\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case7:printf("Usted eligió Urano");//este programa genera menu de característicasprintf("Bienvenido a Urano\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case8:printf("Usted eligió Neptuno");//este programa genera menu de característicasprintf("Bienvenido a Neptuno\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;case9:printf("Usted eligió Luna");//este programa genera menu de característicasprintf("Bienvenido a Luna\n");printf("1) Quieres saber su tamaño?");printf("2) Quieres saber su posición en el sistema solar?");printf("3) Quieres saber si es habitable?");switch(opt2){case1:printf("Usted eligió TAMAÑO\n");break;case2:printf("Usted eligió POSICIÓN\n");breakcase3:printf("Usted eligió HABITABLE\n");breakdefault:printf("Opción Inválida\n");}break;default:printf("Opción Inválida\n");
return 0;
}
Hola!
Para poner el código así lo haces con el formato de markdown, el cual se tratá de poner tres backtick, luego el código y cerrar con otras 3.
\```// Aquí iría tu código (sin los \)
\```
Luego tendrías este resultado
switch(variable){case1:// códigobreak;}
Aquí está mi programa anterior con la opción que el usuario elija lo que desee pero ahora usando switch:
#include <stdio.h>int option1;int option2;int main(){printf("Binvenidos al Restaurante de comida corrida 'Las Delicias'.\n\nElija una opción del Menú: \n");printf("Opción 1: Primer tiempo \n");printf("Opción 2: Segundo tiempo \n");printf("Opción 3: Tercer tiempo \n");printf("Opción 4: Bebidas \n");printf("Opción 5: Postres \n");scanf("%d",&option1);switch(option1){case1:printf("Eligió la opción del Primer Tiempo. Elija qué va a consumir: \n\n");printf("Opción 1: Caldo de pollo \n");printf("Opción 2: Sopa de lentejas \n");printf("Opción 3: Caldo Tlalpeño \n");printf("Opción 4: Crema de Champiñones \n");scanf("%d",&option2);switch(option2){case1:printf("Usted eligió: Caldo de pollo \n");break;case2:printf("Usted eligió: Sopa de lentejas \n");break;case3:printf("Usted eligió: Caldo Tlalpeño \n");break;case4:printf("Usted eligió: Crema de Champiñones \n");break;default:printf("Opción inválida \n");break;}case2:printf("Eligió la opción del segundo tiempo. Elija qué va a consumir: \n\n");printf("Opción 1: Arroz \n");printf("Opción 2: Espagueti blanco \n");printf("Opción 3: Espagueti rojo \n");scanf("%d",&option2);switch(option2){case1:printf("Usted eligió: Arroz \n");break;case2:printf("Usted eligió: Espagueti blanco \n");break;case3:printf("Usted eligió: Espagueti rojo \n");break;default:printf("Opción inválida \n");break;}case3:printf("Eligió la opción del tercer tiempo. Elija qué va a consumir: \n\n");printf("Opción 1: Carne asada con ensalada y papas a la francesa \n");printf("Opción 2: Hamburguesa con ensalada y papas a la francesa \n");printf("Opción 3: Pechuga de Pollo a la plancha \n");printf("Opción 4: Pechuga de Pollo empanizada \n");printf("Opción 5: Flautas de Pollo \n");scanf("%d",&option2);switch(option2){case1:printf("Usted eligió: Carne asada con ensalada y papas a la francesa \n");break;case2:printf("Usted eligió: Hamburguesa con ensalada y papas a la francesa \n");break;case3:printf("Usted eligió: Pechuga de Pollo a la plancha \n");break;case4:printf("Usted eligió: Pechuga de Pollo empanizada \n");break;case5:printf("Usted eligió: Flautas de Pollo \n");break;default:printf("Opción inválida \n");break;}case4:printf("Eligió la opción de Bebidas. Elija qué va a consumir: \n\n");printf("Opción 1: Jarra de Agua simple \n");printf("Opción 2: Jarra de Agua de horchata \n");printf("Opción 3: Jarra de Agua de jamaica \n");scanf("%d",&option2);switch(option2){case1:printf("Usted eligió: Jarra de Agua simple \n");break;case2:printf("Usted eligió: Jarra de Agua de horchata \n");break;case3:printf("Usted eligió: Jarra de Agua de jamaica \n");break;default:printf("Opción inválida \n");break;}case5:printf("Eligió la opción de Postres. Elija qué va a consumir: \n\n");printf("Opción 1: Gelatina \n");printf("Opción 2: Duraznos en almibar \n");printf("Opción 3: Plátanos con crema \n");scanf("%d",&option2);switch(option2){case1:printf("Usted eligió: Gelatina \n");break;case2:printf("Usted eligió: Duraznos en almibar \n");break;case3:printf("Usted eligió: Plátanos con crema \n");break;default:printf("Opción inválida \n");break;}default:printf("Opción no válida.");break;}return0;}
#include <stdio.h>
int opt1 = 1;
int opt2 = 2;
int main(){
printf("bienvenid a platzi store : \n");
printf("opcion 0 para platzi bebidas \n");
printf("opcion 1 para platzi comidas \n");
printf("opcion 2 para platzi postres \n");
switch(opt1){case0:printf("usted eligio la opcion 0, vera nuestro menu de bebidas elija una: \n");switch(opt2){case0:printf("usted eligio una platzi cola cero, mmm rico");break;case1:printf("usted eligio una platzi cola con azucar, mmm rico");break;case2:printf("usted eligio una platzi pina colada con azucar, mmm rico");break;default:printf("opcion invalida \n");break;}break;case1:printf("usted eligio la opcion 1, vera nuestro menu de comidas elija una: \n");switch(opt2){case0:printf("usted eligio un arroz con pato, provecho man");break;case1:printf("usted eligio un ceviche peruano, lo máximo");break;case2:printf("usted eligio una causa de pulpa de cangrejo, mmm rico");break;default:printf("opcion invalida \n");break;}break;case2:printf("usted eligio la opcion 2, vera nuestro menu de postres elija una: \n");switch(opt2){case0:printf("usted eligio un arroz con leche, bien ahí");break;case1:printf("usted eligio un suspiro a la limeña, lo máximo");break;case2:printf("usted eligio una gelatina, simple pero rico");break;default:printf("opcion invalida \n");break;}break;default:printf("opcion invalida \n");break;}return0;
}
Hola, Walter :)
Si dejas el default al final, break no haría nada; pero considera un escenario como el siguiente (tomado de este hilo en stack overflow)
switch(num){case1:DoSomething();case2:DoSomething2();case3:case4:case5:Console.WriteLine("You have entered {0}", num);break;default:Console.WriteLine("You have not entered a number between 1 and 10");//break; This part is commentedcase6:DoSomething3();}
Si no hay un break, el código podría seguir cada paso, incluso después de default y entrar en case 6.
Así que podrías considerar "siempre usar break" como una buena práctica, para evitar posible errores en la lógica de tu código.
comparto el codigo completo, he agregado la solicitud del nombre del usuario, para darle el toque personalizado de atención jaja, adjunto el codigo y el resultado 😊
Código:
#include <stdio.h>int opt1 =0;int opt2 =0;char nombre[10];int main(){printf("Buen dia, ingrese su nombre porfavor: ");scanf("%s",&nombre);printf("\n\n\n###########################################################\n");printf("Bienvenido %s al restaurant Jorge Z:\n", nombre);printf("Tiene tres categorias para elegir el menu:\n");printf("Opcion 0: Bebidas\nOpcion 1: comidas\nOpcion 2: Postres\n");printf("Ahora selecciona la categoria a revisar: ");scanf("%d",&opt1);printf("###########################################################\n\n\n");switch(opt1){case0:printf("################################\n");printf("%s, haz escogido la categoría [0]Bebidas\n", nombre);printf("Te presento la lista de bebidas para que elijas:\n");printf("Opcion 0: Mojito\nOpcion 1: Pisco sour\nOpcion 2: Limonada Frozen\n");printf("Ahora selecciona que deseas tomar: ");scanf("%d",&opt2);printf("##################################\n\n\n");switch(opt2){case0:printf("%s, Usted ha elegido la bebida Mojito ", nombre);break;case1:printf("%s, Usted ha elegido la bebida Pisco sour ", nombre);break;case2:printf("%s, Usted ha elegido la bebida Limonada Frozen ", nombre);break;default:printf("%s, Ha elegido una opcion incorrecta", nombre);break;}break;case1:printf("################################\n");printf("%s, haz escogido la categoría [1]Comidas\n", nombre);printf("Te presento la lista de bebidas para que elijas:\n");printf("Opcion 0: Lomo saltado\nOpcion 1: Ceviche\nOpcion 2: Carapulcra\n");printf("Ahora selecciona que deseas tomar: ");scanf("%d",&opt2);printf("##################################\n\n\n");switch(opt2){case0:printf("%s, Usted ha elegido la bebida Lomo saltado ", nombre);break;case1:printf("%s, Usted ha elegido la bebida Ceviche ", nombre);break;case2:printf("%s, Usted ha elegido la bebida Carapulcra ", nombre);break;default:printf("%s, Ha elegido una opcion incorrecta", nombre);break;}break;case2:printf("################################\n");printf("%s, haz escogido la categoría [2]Postres\n", nombre);printf("Te presento la lista de bebidas para que elijas:\n");printf("Opcion 0: suspiro a la limeña\nOpcion 1: Mazamorra combinada\nOpcion 2: Cheesecake\n");printf("Ahora selecciona que deseas tomar: ");scanf("%d",&opt2);printf("##################################\n\n\n");switch(opt2){case0:printf("%s, Usted ha elegido la bebida suspiro a la limeña ", nombre);break;case1:printf("%s, Usted ha elegido la bebida Mazamorra combinada ", nombre);break;case2:printf("%s, Usted ha elegido la bebida Cheesecake ", nombre);break;default:printf("%s, Ha elegido una opcion incorrecta", nombre);break;}break;default:printf("ha seleccionado una categoria incorrecta\n");printf("Adios");break;}}```Resultado: 
Pequeño ejemplo con switch:
#include <stdio.h>enumPriceTennis{AIR_FORCE_ONE=2000,NEW_BALANCE_550v5=2500,Jordan_Original_2=3500};const int ENVIO=300;int main(void){ int selector;printf("¿Cuáles quieres?\n");scanf("%d",&selector);switch(selector){case1:printf("Los Nike Air Force One cuestan: %d\n",AIR_FORCE_ONE);printf("El costo de envío es: %d\n",ENVIO);printf("El costo total es: %d\n",AIR_FORCE_ONE+ENVIO);break;case2:printf("Los New Balance 550v5 cuestan: %d\n",NEW_BALANCE_550v5);printf("El costo de envío es: %d\n",ENVIO);printf("El costo total es: %d\n",NEW_BALANCE_550v5+ENVIO);break;case3:printf("Los Jordan Originales 2 cuestan: %d\n",Jordan_Original_2);printf("El costo de envío es: %d\n",ENVIO);printf("El costo total es: %d\n",Jordan_Original_2+ENVIO);break;default:printf("No hay más modelos en existencia\n");}return0;}