Exercices corrigés en Java et langage C pour maîtriser switch-case
L'instruction Switch-case est une puissante fonctionnalité de programmation qui vous permet de contrôler le flux de votre programme en fonction de la valeur d'une variable ou d'une expression. Vous pouvez l'utiliser pour exécuter différents blocs de code, selon la valeur de la variable lors de l'exécution.
Bien que les langages populaires comme Java et C ++ aient une instruction switch intégrée, vous serez peut-être surpris de savoir que le langage Python n'en a pas.
Cependant, en raison de la table de sauts, une instruction switch est beaucoup plus rapide qu'une if-else-if. Au lieu d'évaluer chaque condition séquentiellement, il suffit de rechercher une fois la variable/expression évaluée et de passer directement à la branche de code appropriée pour l'exécuter.
Dans les exercices suivants, nous essaierons de vous montrer comment utiliser un switch-case pour faire face à divers problèmes.
Exercice 1
Écrivez un programme pour Saisir le numéro du jour dans une semaine (1-7) et affichez le nom du jour à l'aide de switch case.
- Saisir le numéro du jour : 2
Données de sortie
- Mardi
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int jour; // Fournir les données d'entrée System.out.print("Saisir le numéro de jour : "); jour = clavier.nextInt(); switch (jour) { case 1: System.out.println("Lundi"); break; case 2: System.out.println("Mardi"); break; case 3: System.out.println("Mercredi"); break; case 4: System.out.println("Jeudi"); break; case 5: System.out.println("Vendredi"); break; case 6: System.out.println("Samedi"); break; case 7: System.out.println("Dimanche"); break; default: System.out.println("Entrée invalide! Veuillez saisir le numéro de jour entre 1 et 7."); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int jour; /* Saisir les données d'entrée */ printf("Saisir le numéro de jour : "); scanf("%d", &jour); switch(jour) { case 1: printf("Lundi"); break; case 2: printf("Mardi"); break; case 3: printf("Mercredi"); break; case 4: printf("Jeudi"); break; case 5: printf("Vendredi"); break; case 6: printf("Samedi"); break; case 7: printf("Dimanche"); break; default: printf("Entrée invalide! Veuillez saisir le numéro de jour entre 1 et 7."); } return 0; }
Exercice 2
Écrivez un programme pour entrer le numéro du mois et imprimez le nombre total de jours de ce mois en utilisant switch-case
Le nombre total de jours dans un mois est donné par le tableau ci-dessous.
Mois | Nombre de jours |
---|---|
Janvier, Mars, Mai, Juillet, Aout, Octobre, Décembre | 31 jours |
Février | 28/29 jours |
Avril, Juin, Septembre, Novembre | 30 jours |
- Saisir le numéro du mois : 7
Données de sortie
- 31 jours
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int mois; // Fournir les données d'entrée System.out.print("Saisir le numéro de mois (1-12): "); mois = clavier.nextInt(); switch (mois) { case 1: System.out.println("31 jours"); break; case 2: System.out.println("28/29 jours"); break; case 3: System.out.println("31 jours"); break; case 4: System.out.println("30 jours"); break; case 5: System.out.println("31 jours"); break; case 6: System.out.println("30 jours"); break; case 7: System.out.println("31 jours"); break; case 8: System.out.println("31 jours"); break; case 9: System.out.println("30 jours"); break; case 10: System.out.println("31 jours"); break; case 11: System.out.println("30 jours"); break; case 12: System.out.println("31 jours"); break; default: System.out.println("Entrée invalide! Veuillez saisir le numéro du mois entre (1-12)."); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int mois; /* Saisir les données d'entrée */ printf("Saisir le numéro de mois (1-12): "); scanf("%d", &mois); switch(mois) { case 1: printf("31 jours"); break; case 2: printf("28/29 jours"); break; case 3: printf("31 jours"); break; case 4: printf("30 jours"); break; case 5: printf("31 jours"); break; case 6: printf("30 jours"); break; case 7: printf("31 jours"); break; case 8: printf("31 jours"); break; case 9: printf("30 jours"); break; case 10: printf("31 jours"); break; case 11: printf("30 jours"); break; case 12: printf("31 jours"); break; default: printf("Entrée invalide! Veuillez saisir le numéro du mois entre (1-12)."); } return 0; }
Exercice 3
Écrivez un programme pour saisir un alphabet et vérifiez s'il s'agit d'une voyelle ou d'une consonne en utilisant "switch-case".
Les lettres a, e, i, o et u en minuscules et en majuscules sont appelées voyelles. Les alphabets autres que les voyelles sont appelés consonnes.
- Saisir une lettre : a
Données de sortie
- a est une voyelle
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); char ch; // Fournir les données d'entrée System.out.print("Saisir une lettre : "); ch = clavier.next().charAt(0); switch (ch) { case 'a': System.out.println("Voyelle"); break; case 'e': System.out.println("Voyelle"); break; case 'i': System.out.println("Voyelle"); break; case 'o': System.out.println("Voyelle"); break; case 'u': System.out.println("Voyelle"); break; case 'A': System.out.println("Voyelle"); break; case 'E': System.out.println("Voyelle"); break; case 'I': System.out.println("Voyelle"); break; case 'O': System.out.println("Voyelle"); break; case 'U': System.out.println("Voyelle"); break; default: System.out.println("Consonne"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { char ch; /* Saisir les données d'entrée */ printf("Saisir une lettre: "); scanf("%c", &ch); switch(ch) { case 'a': printf("Voyelle"); break; case 'e': printf("Voyelle"); break; case 'i': printf("Voyelle"); break; case 'o': printf("Voyelle"); break; case 'u': printf("Voyelle"); break; case 'A': printf("Voyelle"); break; case 'E': printf("Voyelle"); break; case 'I': printf("Voyelle"); break; case 'O': printf("Voyelle"); break; case 'U': printf("Voyelle"); break; default: printf("Consonne"); } return 0; }
Exercice 4
Écrivez un programme pour saisir deux nombres de l'utilisateur et trouvez le maximum entre les deux nombres en utilisant "switch case".
- Nombre 1 : 13
- Nombre 2 : 12
Données de sortie
- 13 est le maximum
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num1, num2; // Fournir les données d'entrée System.out.print("Saisir nombre 1 : "); num1 = clavier.nextInt(); System.out.print("Saisir nombre 2 : "); num2 = clavier.nextInt(); // (num1 > num2) retourne 0(Faux) ou 1(Vrai) */ switch ((num1 > num2) ? 1 : 0) { // Si (num1>num2) est fausse */ case 0: System.out.println(num2 + " est le maximum"); break; // Si (num1>num2) est vraie */ case 1: System.out.println(num1 + " est le maximum"); break; } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int num1, num2; /* Saisir les données d'entrée */ printf("Saisir deux nombres: "); scanf("%d%d", &num1, &num2); /* (num1 > num2) retourne 0(Faux) ou 1(Vrai) */ switch(num1 > num2) { /* Si (num1>num2) est fausse */ case 0: printf("%d est le maximum", num2); break; /* Si (num1>num2) est vraie */ case 1: printf("%d est le maximum", num1); break; } return 0; }
Exercice 5
Écrivez un programme pour saisir un nombre de l'utilisateur et vérifiez si ce nombre est pair ou impair en utilisant "switch case".
- Saisir un nombre : 14
Données de sortie
- 14 est un nombre pair
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); switch (num % 2) { /* Si n%2 == 0 */ case 0: System.out.println("Pair"); break; /* Sinon n%2 == 1 */ case 1: System.out.println("Impair"); break; } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int num; /* Saisir les données d'entrée */ printf("Saisir un nombre"); scanf("%d", &num); switch(num % 2) { /* Si n%2 == 0 */ case 0: printf("Pair"); break; /* Sinon n%2 == 1 */ case 1: printf("Impair"); break; } return 0; }
Exercice 6
Écrivez un programme pour entrer un nombre et vérifiez si ce nombre est positif, négatif ou nul en utilisant "switch case".
- Saisir un nombre : -3
Données de sortie
- -3 est un nombre négatif
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); switch (num > 0 ? 1 : 0) { // Num est positif case 1: System.out.println(num + " est positif."); break; // Num soit négatif soit nul case 0: switch (num < 0 ? 1 : 0) { case 1: System.out.println(num + " est négatif."); break; case 0: System.out.println(num + " est nul."); break; } break; } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int num; /* Saisir les données d'entrée */ printf("Saisir un nombre: "); scanf("%d", &num); switch (num > 0) { // Num est positif case 1: printf("%d est positif.", num); break; // Num soit négatif soit nul case 0: switch (num < 0) { case 1: printf("%d est négatif.", num); break; case 0: printf("%d est nul.", num); break; } break; } return 0; }
Exercice 7
Écrivez un programme pour créer une calculatrice qui exécute des opérations arithmétiques de base (additionn, soustration, multiplication et diviseion) en utilisant "switch-case"
- 7 - 2
Données de sortie
- 5
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); double num1, num2, resultat = 0; char op; // Fournir les données d'entrée System.out.print("Saisir nombre 1 : "); num1 = clavier.nextDouble(); System.out.print("Saisir l'opérateur: "); op = clavier.next().charAt(0); System.out.print("Saisir nombre 2 : "); num2 = clavier.nextDouble(); switch (op) { case '+': resultat = num1 + num2; break; case '-': resultat = num1 - num2; break; case '*': resultat = num1 * num2; break; case '/': resultat = num1 / num2; break; default: System.out.println("Opérateur invalid"); } System.out.println(num1 + " " + op + " " + num2 + " = " + resultat); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { char op; float num1, num2, resultat=0.0f; /* Saisir les données d'entrée */ printf("Saisir une opération [Num 1] [+ - * /] [Num 2]\n"); scanf("%f %c %f", &num1, &op, &num2); switch(op) { case '+': resultat = num1 + num2; break; case '-': resultat = num1 - num2; break; case '*': resultat = num1 * num2; break; case '/': resultat = num1 / num2; break; default: printf("Opérateur invalid"); } /* afficher le résultat */ printf("%.2f %c %.2f = %.2f", num1, op, num2, resultat); return 0; }