Ces exercices couvrent les bases du langage C : types de données, expressions, directives préprocesseur et structures conditionnelles. Ils sont conçus pour les étudiants de GeniusRepetition et Nkilitech à Dschang.
Questionnaire à Choix Multiples (20 questions)
1. Quel est le type de base en C pour représenter un caractère?
Voir la correction
Masquer la correction
Réponse correcte: b) char
Explication: En C, le type char est utilisé pour représenter un caractère. Le type int est pour les entiers, string n'est pas un type primitif en C, et character n'existe pas.
2. Quelle directive préprocesseur est utilisée pour inclure un fichier d'en-tête?
Voir la correction
Masquer la correction
Réponse correcte: a) #include
Explication: La directive #include est utilisée pour inclure le contenu d'un fichier d'en-tête dans le programme. #define est utilisé pour les macros, tandis que #import et #using ne sont pas des directives standard en C.
3. Quel opérateur est utilisé pour l'affectation en C?
Voir la correction
Masquer la correction
Réponse correcte: a) =
Explication: L'opérateur = est utilisé pour l'affectation en C. L'opérateur == est utilisé pour la comparaison d'égalité, := est utilisé dans d'autres langages comme Pascal, et -> est utilisé pour accéder aux membres d'une structure via un pointeur.
4. Quelle est la valeur de l'expression: 5 / 2 en C?
Voir la correction
Masquer la correction
Réponse correcte: b) 2
Explication: En C, la division entre deux entiers donne un résultat entier. La partie décimale est tronquée. Pour obtenir 2.5, il faudrait écrire 5.0 / 2 ou 5 / 2.0.
5. Quelle est la sortie du code suivant: printf("%d", 10 % 3);
Voir la correction
Masquer la correction
Réponse correcte: b) 1
Explication: L'opérateur % donne le reste de la division entière. 10 divisé par 3 donne 3 avec un reste de 1.
6. Quel type de données utilise le moins de mémoire en C?
Voir la correction
Masquer la correction
Réponse correcte: d) char
Explication: Le type char utilise généralement 1 octet en mémoire. Les types int et float utilisent généralement 4 octets, et double utilise généralement 8 octets.
7. Quelle est la valeur de sizeof(int) sur la plupart des systèmes modernes?
Voir la correction
Masquer la correction
Réponse correcte: c) 4 octets
Explication: Sur la plupart des systèmes 32 bits et 64 bits modernes, sizeof(int) retourne 4 octets. Cependant, cela peut varier selon l'architecture.
8. Quel opérateur est utilisé pour obtenir l'adresse d'une variable?
Voir la correction
Masquer la correction
Réponse correcte: b) &
Explication: L'opérateur & (adresse de) est utilisé pour obtenir l'adresse mémoire d'une variable. L'opérateur * est utilisé pour déréférencer un pointeur.
9. Quelle est la valeur de 5 == 5 en C?
Voir la correction
Masquer la correction
Réponse correcte: b) 1
Explication: En C, les expressions booléennes retournent 1 pour vrai et 0 pour faux. Comme 5 est égal à 5, l'expression retourne 1.
10. Quelle directive préprocesseur définit une constante?
Voir la correction
Masquer la correction
Réponse correcte: b) #define
Explication: La directive #define est utilisée pour définir des constantes symboliques et des macros. Il n'y a pas de directives #const ou #constant en C.
11. Quel est le résultat de !0 en C?
Voir la correction
Masquer la correction
Réponse correcte: b) 1
Explication: L'opérateur ! est l'opérateur de négation logique. Comme 0 représente faux, !0 (non faux) donne vrai, qui est représenté par 1 en C.
12. Quelle structure de contrôle est utilisée pour exécuter un bloc de code conditionnellement?
Voir la correction
Masquer la correction
Réponse correcte: c) if
Explication: La structure if est utilisée pour l'exécution conditionnelle. Les structures for, while et do sont utilisées pour les boucles.
13. Comment déclare-t-on un pointeur vers un entier?
Voir la correction
Masquer la correction
Réponse correcte: b) int *ptr;
Explication: Pour déclarer un pointeur vers un entier, on utilise int *ptr;. L'astérisque (*) indique que ptr est un pointeur vers un entier.
14. Quelle fonction est utilisée pour afficher du texte à l'écran en C?
Voir la correction
Masquer la correction
Réponse correcte: b) printf()
Explication: La fonction printf() est utilisée pour afficher du texte formaté à l'écran en C. Elle est définie dans l'en-tête stdio.h.
15. Quel est le type de retour de la fonction main() en C?
Voir la correction
Masquer la correction
Réponse correcte: d) int
Explication: La fonction main() en C retourne typiquement un int qui représente le code de sortie du programme. 0 indique un succès, et d'autres valeurs indiquent des erreurs.
16. Quelle est la valeur de sizeof('A') en C?
Voir la correction
Masquer la correction
Réponse correcte: c) 4
Explication: En C, un caractère entre guillemets simples (comme 'A') est traité comme un int, pas comme un char. Donc sizeof('A') retourne la taille d'un int, qui est généralement 4 octets.
17. Quel opérateur a la plus haute priorité dans cette liste?
Voir la correction
Masquer la correction
Réponse correcte: c) ()
Explication: Les parenthèses () ont la priorité la plus élevée. Ensuite vient la multiplication *, puis l'addition +, et enfin l'affectation = qui a la priorité la plus basse.
18. Quelle est la valeur de 3 + 4 * 5 en C?
Voir la correction
Masquer la correction
Réponse correcte: b) 23
Explication: La multiplication a une priorité plus élevée que l'addition. Donc l'expression est évaluée comme 3 + (4 * 5) = 3 + 20 = 23.
19. Quel mot-clé est utilisé pour définir une structure en C?
Voir la correction
Masquer la correction
Réponse correcte: a) struct
Explication: Le mot-clé struct est utilisé pour définir une structure en C, qui est un type de données composite regroupant plusieurs variables de types différents.
20. Quelle est la sortie de ce code: printf("%c", 65);
Voir la correction
Masquer la correction
Réponse correcte: b) A
Explication: Le spécificateur de format %c affiche le caractère correspondant au code ASCII fourni. Le code ASCII 65 correspond au caractère 'A' majuscule.
Exercices Contextuels
Exercice 1: Calcul du prix total des produits
Vous travaillez pour Nkilitech à Dschang et devez écrire un programme qui calcule le prix total d'achat de produits en tenant compte d'une remise.
Écrivez un programme en C qui:
- Demande à l'utilisateur le prix unitaire d'un produit
- Demande la quantité achetée
- Calcule le prix total avant remise (prix unitaire × quantité)
- Applique une remise de 10% si le prix total avant remise est supérieur à 10000 FCFA
- Affiche le prix total à payer
Voir la correction
Masquer la correction
Correction:
#include <stdio.h>
int main() {
float prixUnitaire, prixTotal, prixFinal;
int quantite;
// Saisie des données
printf("Entrez le prix unitaire du produit (FCFA): ");
scanf("%f", &prixUnitaire);
printf("Entrez la quantité achetée: ");
scanf("%d", &quantite);
// Calcul du prix total avant remise
prixTotal = prixUnitaire * quantite;
// Application de la remise conditionnelle
if (prixTotal > 10000) {
prixFinal = prixTotal * 0.9; // 10% de remise
printf("Félicitations! Vous bénéficiez d'une remise de 10%%\n");
} else {
prixFinal = prixTotal;
}
// Affichage du résultat
printf("Prix total à payer: %.2f FCFA\n", prixFinal);
return 0;
}
Explications:
- Nous utilisons
float pour les prix car ils peuvent avoir des décimales
int est utilisé pour la quantité car c'est un nombre entier
- La structure conditionnelle
if vérifie si le prix total dépasse 10000 FCFA
- Pour appliquer une remise de 10%, on multiplie par 0.9 (100% - 10% = 90%)
- Le format
%.2f dans printf affiche le prix avec 2 décimales
Exercice 2: Gestion des étudiants de GeniusRepetition
Vous développez un système pour GeniusRepetition à Dschang pour gérer les notes des étudiants.
Écrivez un programme qui:
- Demande à l'utilisateur d'entrer trois notes (sur 20)
- Calcule la moyenne des notes
- Affiche la mention correspondante:
- Très bien si moyenne ≥ 16
- Bien si 14 ≤ moyenne < 16
- Assez bien si 12 ≤ moyenne < 14
- Passable si 10 ≤ moyenne < 12
- Insuffisant si moyenne < 10
Voir la correction
Masquer la correction
Correction:
#include <stdio.h>
int main() {
float note1, note2, note3, moyenne;
// Saisie des notes
printf("Entrez la première note (sur 20): ");
scanf("%f", ¬e1);
printf("Entrez la deuxième note (sur 20): ");
scanf("%f", ¬e2);
printf("Entrez la troisième note (sur 20): ");
scanf("%f", ¬e3);
// Calcul de la moyenne
moyenne = (note1 + note2 + note3) / 3;
// Affichage de la moyenne
printf("Moyenne: %.2f/20 - ", moyenne);
// Détermination de la mention avec if-else if
if (moyenne >= 16) {
printf("Très bien\n");
} else if (moyenne >= 14) {
printf("Bien\n");
} else if (moyenne >= 12) {
printf("Assez bien\n");
} else if (moyenne >= 10) {
printf("Passable\n");
} else {
printf("Insuffisant\n");
}
return 0;
}
Explications:
- Nous utilisons une série de conditions
if-else if pour évaluer la mention
- L'ordre des conditions est important: on commence par la condition la plus restrictive
- Notez qu'il n'est pas nécessaire de vérifier la borne supérieure dans chaque condition car les conditions sont évaluées dans l'ordre
- Le calcul de la moyenne se fait avec une expression arithmétique simple
Exercice 3: Calculateur d'IMC (Indice de Masse Corporelle)
Dans le cadre d'un projet santé à Dschang, vous devez créer un programme qui calcule l'IMC d'une personne.
Écrivez un programme qui:
- Demande le poids (en kg) et la taille (en m) d'une personne
- Calcule l'IMC avec la formule: IMC = poids / (taille × taille)
- Affiche l'IMC et la catégorie correspondante:
- Insuffisance pondérale: IMC < 18.5
- Poids normal: 18.5 ≤ IMC < 25
- Surpoids: 25 ≤ IMC < 30
- Obésité: IMC ≥ 30
Voir la correction
Masquer la correction
Correction:
#include <stdio.h>
int main() {
float poids, taille, imc;
// Saisie des données
printf("Entrez votre poids (en kg): ");
scanf("%f", &poids);
printf("Entrez votre taille (en m): ");
scanf("%f", &taille);
// Calcul de l'IMC
imc = poids / (taille * taille);
// Affichage de l'IMC
printf("Votre IMC est: %.2f - ", imc);
// Détermination de la catégorie
if (imc < 18.5) {
printf("Insuffisance pondérale\n");
} else if (imc < 25) {
printf("Poids normal\n");
} else if (imc < 30) {
printf("Surpoids\n");
} else {
printf("Obésité\n");
}
return 0;
}
Explications:
- L'IMC est calculé avec une expression arithmétique simple
- Nous utilisons à nouveau une série de conditions
if-else if pour déterminer la catégorie
- Notez que la taille doit être en mètres (pas en centimètres)
- Le format
%.2f permet d'afficher l'IMC avec 2 décimales pour plus de précision