EXAMEN LANGAGE C ( PROGRAMMATION C ) TEST  21 /XX année acaDéMIQUE 2024 - 2025

EXAMEN + CORRIGE EN LANGAGE C

EXERCICE 1 : Exécution de Code 04 pts

Donnez la sortie écran de ce programme C :

Programe a

 

#include 
#include    // Pour exit()
#include      // Pour ceil()
#include    // Pour sleep()
 typedef struct {  int mission; int princesse; int points; } N;
int Bravo(int k, int j) {    return k + j; }
int Delta(int x, int xx) {  return x * xx; }
void Alpha(int (*func)(int, int), int a, int b, int c, int d, int e, int f) {
    int r1 = func(a, b);
    int r2 = func(c, d);
    int r3 = func(e, f);
    printf("Mission 1 = %d\n", r1);
    printf("Terminée 2 = %d\n", r2);
    printf("Succès  3 = %d\n", r3);
    N enregistrements[4];
    for (int m = 1; m <= 4; m++) {
        r1 += m * 2;
        r2 -= m * 3;
        r3 += (m % 2 == 0) ? m * 5 : m * 4;
        r1 = (int)ceil(r1 * 1.0);
        r2 = (int)ceil(r2 * 1.0);
        r3 = (int)ceil(r3 * 1.0);
        enregistrements[m - 1].mission = r1;
        enregistrements[m - 1].princesse = r3;
        enregistrements[m - 1].points = r2;
        printf(" [%d] : Mission = %d Accomplie, Princesse = %d sauve, point restant  %d\n", m, r1, r3, r2);
        sleep(1);    }
    FILE *fichier = fopen("resultats.txt", "w");
    if (fichier == NULL) { printf("Erreur lors de l'ouverture du fichier !\n"); exit(1); }
for (int i = 0; i < 4; i++) {      fprintf(fichier, "Mission: %d, Princesse: %d, Points: %d\n",  enregistrements[i].mission, enregistrements[i].princesse, enregistrements[i].points); }
fclose(fichier); printf("Les résultats ont été enregistrés dans 'resultats.txt'.\n"); }
  int main() { int a = 15, b = 30, c = 21, d = 41, e = 17, f = 11;  Alpha(Bravo, a, b, c, d, e, f); return 0;}

EXERCICE 2 : 07 pts 

1. Union : Gestion de données partagées

Complétez le code pour gérer une union en C.

#include <stdio.h>
#include <string.h>

union Donnee {
    int entier;
    float reel;
    char texte[20];
};

int main() {
    union Donnee data;

    data.entier = 10;
    printf("Entier : %d\n", data.entier);

    data.______ = ______;
    printf("Flottant : %.2f\n", data.reel);

    strcpy(data.______, ______);
    printf("Texte : %s\n", data.texte);

    return 0;
}
    

Questions :

  1. Complétez le code pour affecter une valeur flottante et une chaîne de caractères.
  2. Expliquez pourquoi les valeurs précédentes sont écrasées lorsqu'une nouvelle valeur est affectée.
  3. Quelle est la taille en mémoire de cette union ? Justifiez.

2. Structure : Gestion d'informations sur un étudiant

Complétez le code pour gérer une structure représentant un étudiant.

#include <stdio.h>
#include <string.h>

struct Etudiant {
    char matricule[20];
    char nom[20];
    char prenom[20];
    int age;
};

int main() {
    struct Etudiant etu;

    printf("Entrez le matricule : ");
    scanf("%s", ______);

    printf("Entrez le nom : ");
    scanf("%s", ______);

    printf("Entrez le prénom : ");
    scanf("%s", ______);

    printf("Entrez l'âge : ");
    scanf("%d", ______);

    printf("\nInformations de l'étudiant :\n");
    printf("Matricule : %s\n", etu.matricule);
    printf("Nom : %s\n", etu.nom);
    printf("Prénom : %s\n", etu.prenom);
    printf("Âge : %d\n", etu.age);

    return 0;
}
    

Questions :

  1. Complétez les parties manquantes du code pour lire les informations de l'étudiant.
  2. Expliquez pourquoi une structure est plus adaptée qu'une union pour gérer plusieurs champs simultanément.
  3. Modifiez le code pour gérer plusieurs étudiants en utilisant un tableau de structures.

3. Enumération : Gestion des couleurs d'un drapeau

Complétez le code pour gérer une énumération représentant des couleurs.

#include <stdio.h>

enum Couleur {
    VERT,
    JAUNE,
    ROUGE,
    BLEU
};

int main() {
    enum Couleur couleur;

    couleur = ______;

    printf("Couleur sélectionnée : ");
    switch (couleur) {
        case VERT:
            printf("Vert\n");
            break;
        case JAUNE:
            printf("Jaune\n");
            break;
        case ROUGE:
            printf("Rouge\n");
            break;
        case BLEU:
            printf("Bleu\n");
            break;
        default:
            printf("Couleur inconnue\n");
    }

    return 0;
}
    

Questions :

  1. Complétez le code pour initialiser la couleur à ROUGE.
  2. Ajoutez un cas supplémentaire dans le switch pour gérer une couleur nommée NOIR.
  3. Pourquoi une énumération est-elle utile dans ce cas ?

4. Matrices : Opérations de base

Complétez le code pour manipuler une matrice 3x3.

#include <stdio.h>

#define N 3

int main() {
    int matrice[N][N];
    int i, j;

    printf("Entrez les éléments de la matrice 3x3 :\n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            scanf("%d", ______);
        }
    }

    printf("Matrice saisie :\n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            printf("%d ", ______);
        }
        printf("\n");
    }

    int sommeDiagonale = 0;
    for (i = 0; i < N; i++) {
        sommeDiagonale += ______;
    }

    printf("Somme des éléments de la diagonale : %d\n", sommeDiagonale);

    return 0;
}
    

Questions :

  1. Complétez le code pour saisir et afficher une matrice 3x3.
  2. Complétez le calcul de la somme des éléments diagonaux.
  3. Modifiez le code pour transposer la matrice (échanger les lignes et colonnes).

PROBLEME : Gestion du parc automobile /9pts (0,5+0,5+1+1+1+1+1+1+1+1)

La société, spécialisée dans la location et la gestion de véhicules, souhaite développer un programme pour gérer efficacement son parc automobile en mémoire centrale d’un ordinateur. Chaque voiture est caractérisée par les informations suivantes : Matricule : une chaîne de caractères unique pour identifier la voiture, Marque : une chaîne de caractères représentant le constructeur, Modèle : une chaîne de caractères précisant le modèle de la voiture, Prix_par_jour : un réel indiquant le coût de location par jour, Kilométrage : un réel indiquant la distance parcourue par la voiture, État : un type énuméré ("Disponible", "Louée", "En_maintenance").

Votre mission est d’implémenter un programme en langage C permettant de répondre aux besoins de la société. Le programme doit utiliser une structure pour modéliser les voitures et un tableau dynamique pour gérer l'ensemble du parc automobile.


Questions :

  1. Structure de données (voiture) : Définissez une structure pour représenter une voiture.
  2. Structure de données (parc automobile) : Définissez un tableau dynamique avec la taille pour gérer le parc automobile (enregistrement).
  3. Implémentez une fonction int rechercherVoiture(ParcAutomobile parc, const char* matricule); permettant de rechercher une voiture par son matricule. La fonction retourne l'indice de la voiture si elle est trouvée, ou -1 sinon.
  4. Implémentez une fonction int ajouterVoiture(ParcAutomobile* parc, Voiture nV); permettant d’ajouter une nouvelle voiture (nV) au parc. La fonction vérifie si le matricule est unique et retourne 1 en cas de succès ou 0 en cas de duplication.
  5. Implémentez une fonction int compterDisponibles(ParcAutomobile parc); permettant de compter et retourner le nombre de voitures disponibles ("Disponible").
  6. Implémentez une fonction int supprimerVoiture(ParcAutomobile* parc, const char* mat); permettant de supprimer une voiture du parc en fonction de son matricule. La fonction retourne 1 si la suppression est réussie, ou 0 sinon.
  7. Implémentez une fonction int modifierPrix(ParcAutomobile* parc, const char* mat, float nouvPrix); permettant de modifier le prix de location d’une voiture spécifiée par son matricule. La fonction retourne 1 en cas de succès ou 0 en cas d’échec.
  8. Implémentez une fonction void afficherMaintenance(ParcAutomobile parc); affichant les informations de toutes les voitures en état "En maintenance".
  9. Implémentez une fonction void trierParc(ParcAutomobile* parc); permettant de trier le parc automobile par prix_par_jour dans l'ordre croissant en utilisant l'algorithme en C du tri par sélection.
  10. Implémentez une fonction int sauvegarderParc(ParcAutomobile parc, const char* FichV); permettant de sauvegarder les informations du parc automobile dans un fichier texte. La fonction retourne 1 en cas de succès ou 0 en cas d’échec.

SOLUTION : CORRECTION

 

 

Si vous avez trouvé les examens corrigés 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