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. 

 

Questionnaire à Choix Multiples (20 questions)

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:

  1. Demande à l'utilisateur le prix unitaire d'un produit
  2. Demande la quantité achetée
  3. Calcule le prix total avant remise (prix unitaire × quantité)
  4. Applique une remise de 10% si le prix total avant remise est supérieur à 10000 FCFA
  5. 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:

  1. Demande à l'utilisateur d'entrer trois notes (sur 20)
  2. Calcule la moyenne des notes
  3. 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:

  1. Demande le poids (en kg) et la taille (en m) d'une personne
  2. Calcule l'IMC avec la formule: IMC = poids / (taille × taille)
  3. 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

Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam