1Note sur 20 → appréciation Facile
Demander une note sur 20 et afficher une appréciation :
| Note | Appréciation |
|---|---|
| note < 10 | Insuffisant |
| 10 ⩽ note < 12 | Passable |
| 12 ⩽ note < 14 | Assez bien |
| 14 ⩽ note < 16 | Bien |
| note ⩾ 16 | Très bien |
Le programme doit aussi vérifier que la note est comprise entre 0 et 20.
Sinon, afficher Note invalide.
#include <stdio.h>
int main(void)
{
float note;
printf("Entrez une note sur 20 : ");
scanf("%f", ¬e);
if (note < 0 || note > 20) {
printf("Note invalide\n");
} else if (note < 10) {
printf("Insuffisant\n");
} else if (note < 12) {
printf("Passable\n");
} else if (note < 14) {
printf("Assez bien\n");
} else if (note < 16) {
printf("Bien\n");
} else {
printf("Tres bien\n");
}
return 0;
}else if et pas cinq if séparésAvec une chaîne else if, dès qu'une condition est vraie
toutes les suivantes sont ignorées. C'est ce qui permet d'écrire
note < 12 tout court : on sait déjà qu'elle n'est pas inférieure à
10, puisque la branche précédente n'a pas été prise.
Avec cinq if indépendants, il faudrait écrire
if (note >= 10 && note < 12) — plus long, et plus facile
à rater.
Une chaîne else if se lit comme un escalier : on descend
jusqu'à la première marche qui tient.
Si l'on place if (note < 0 || note > 20) en dernier, il ne sera
jamais atteint : une note de 25 aurait déjà déclenché note >= 16 →
Très bien. Une note de −5 aurait déclenché note < 10 →
Insuffisant.
Dans une chaîne else if, l'ordre est la
logique. Le cas d'erreur se teste avant les cas normaux.
float plutôt que intUne note peut valoir 12,5. Avec int note;, scanf("%d", …)
lirait 12 et laisserait ,5 dans le tampon — la suite du
programme partirait en vrille. Le type doit correspondre à la réalité de la donnée,
pas à ce qui est le plus simple à écrire.
Vérifié à l'exécution pour 8 → Insuffisant, 11 → Passable, 13 → Assez bien, 15 → Bien, 18 → Très bien, 25 → Note invalide.