En C, il existe un opérateur conditionnel (switch..case) qui permet de comparer
une variable avec plusieurs expressions.
La syntaxe générale est la suivante :
switch ( Variable ) {
case Valeur1: Bloc d'instructions 1;
break;
case Valeur2: Bloc d'instructions 2;
break;
...
case ValeurN: Bloc d'instructions N;
break;
default: Bloc d'instructions par défaut;
}
Variable est égale à Valeur1, c'est le bloc d'instructions 1 qui est exécuté.Variable est égale à Valeur2, c'est le bloc d'instructions 2 qui est exécuté.Variable est égale à ValeurN, c'est le bloc d'instructions N qui est exécuté. Variable n'est égale à aucune des ValeurX, c'est le bloc d'instructions par defaut qui est exécuté. Voici l'organigramme associé :

switch..case ne peut pas tester des intervalles.Voici un exemple qui reprend un exercice précédent. Cette fois-ci la succession
de if est remplacée par un seul switch..case :
// Affiche le chiffre en toutes lettres
switch (chiffre) {
case 0: printf ("zéro\n"); break;
case 1: printf ("un\n"); break;
case 2: printf ("deux\n"); break;
case 3: printf ("trois\n"); break;
case 4: printf ("quatre\n"); break;
case 5: printf ("cinq\n"); break;
case 6: printf ("six\n"); break;
case 7: printf ("sept\n"); break;
case 8: printf ("huit\n"); break;
case 9: printf ("neuf\n"); break;
default : printf ("%d n'est pas un chiffre\n", chiffre);
}
Écrire un programme qui demande à l'utilisateur de saisir un chiffre. À l'aide de
l'instruction switch..case affichez le chiffre en toutes lettres en anglais.
unsigned int chiffre;
// Demande à l'utilisateur d'entrer un chiffre
printf ("Enter a number between 0 and 9 : ");
scanf ("%u", &chiffre);
// Affiche le chiffre en toutes lettres en anglais
// COMPLETEZ ICI
Voici l'affichage attendu :
Enter a number between 0 and 9 : 7
seven
Enter a number between 0 and 9 : 12
12 is not between 0 and 9.
La variable chiffre est maintenant de type char et contient un caractère.
Si le caractère représente un chiffre (de 0 à 9), on affiche ce chiffre en anglais
en toutes lettres. Si ce n'est pas un chiffre, on affiche : Non valid character.
char chiffre = '7';
// Affiche le chiffre en toutes lettres en anglais
// COMPLETEZ ICI
Voici l'affichage attendu avec char chiffre = '7';
seven
Voici l'affichage attendu avec char chiffre = 'x';
x is not between 0 and 9.
Écrire un programme qui convertit un caractère hex contenant un symbole hexadécimal
(de 0 à F). Le résultat de conversion en base 10 sera affecté à la variable dec. On
ne traitera que les caractères majuscules pour les lettres de A à F. Si le caractère n'est pas
valide, on mettra -1 dans la variable dec.
// Caractère à convertir
char hex = 'B';
// Résultat en base 10
short dec;
// Convertit le cractère hexadécimal en base 10
// COMPLETEZ ICI
// Affiche le résultat de la conversion
if (dec==-1) printf ("Conversion non valide\n");
else printf ("0x%c = %d en décimal\n", hex, dec);
Voici l'affichage attendu avec char hex = 'F';
0xF = 15 en décimal
Voici l'affichage attendu avec char hex = 'f';
Conversion non valide
Qu'affiche le code suivant ?
int x = 2;
switch (x) {
case 0: printf ("Bonjour"); break;
case 1: printf ("Hola"); break;
case 2: printf ("Konnichiwa"); break;
default : printf ("Hello");
}
x=2, c'est le case 2: qui est exécuté.
Essaie encore ...
Qu'affiche le code suivant ?
int x = 3;
switch (x) {
case 0: printf ("Bonjour"); break;
case 1: printf ("Hola"); break;
case 2: printf ("Konnichiwa"); break;
default : printf ("Hello");
}
x ne correspond à aucun des cas. C'est l'instruction par défaut qui s'exécute.
Essaie encore ...
Quelle syntaxe permet de tester un intervalle avec un switch..case ?
switch (note) {
//...
??? : printf ("Mention très bien"); break;
//...
}
switch..case.
Essaie encore ...