Exercices de Programmation C - GeniusClassrooms Dschang
Exercices de Programmation C - GeniusClassrooms Dschang
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.
1. Quel est le type de base en C pour représenter un caractère?
a) int
b) char
c) string
d) character
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?
a) #include
b) #define
c) #import
d) #using
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?
a) =
b) ==
c) :=
d) ->
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?
a) 2.5
b) 2
c) 3
d) 2.0
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);
a) 3
b) 1
c) 0
d) 3.33
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?
a) int
b) float
c) double
d) char
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?
a) 1 octet
b) 2 octets
c) 4 octets
d) 8 octets
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?
a) *
b) &
c) ->
d) #
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?
a) 0
b) 1
c) 5
d) Vrai
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?
a) #include
b) #define
c) #const
d) #constant
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?
a) 0
b) 1
c) -1
d) Erreur
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?
a) for
b) while
c) if
d) do
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?
a) int ptr;
b) int *ptr;
c) &int ptr;
d) pointer int ptr;
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?
a) print()
b) printf()
c) echo()
d) display()
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?
a) void
b) char
c) float
d) int
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?
a) 1
b) 2
c) 4
d) 8
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?
a) +
b) *
c) ()
d) =
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?
a) 35
b) 23
c) 19
d) 60
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?
a) struct
b) class
c) union
d) object
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);
a) 65
b) A
c) a
d) Erreur
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
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
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
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
Conseils pour réussir en programmation C:
Pratiquez régulièrement en écrivant du code
Comprenez bien les types de données et leurs tailles en mémoire
Maîtrisez les opérateurs et leur priorité
Testez vos programmes avec différentes valeurs d'entrée
Utilisez des noms de variables significatifs
Commentez votre code pour mieux le comprendre plus tard
Si vous avez trouvé cet exercice corrige en Langage C de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !
Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk