EXAMEN LANGAGE C ( PROGRAMMATION C ) TEST  18 /XX annee acaDEMIQUE 2024 - 2025

EXAMEN + CORRIGE EN LANGAGE C

EXERCICE 1 : Exécution de Code 03 pts

What will each of the following programs display?

Programe a Program b

 

#include <stdio.h>
int main() {
    int i = 5, j = 10;
    int r = i++ + ++j;
    printf("r : %d\n", r);
    printf("i : %d\n", i);
    printf("j : %d", j);
    return 0;
}
            
#include <stdio.h>
int main() {
    long a = 10L;
    short b = 6;
    signed char c = -3;
    unsigned long result = (a | b) & ~(c << 1);
    printf("Valeur de result : %lu\n", result);
    return 0;
}
            

EXERCICE 2 :  Généralités 11 pts :

  1. Quelle est la différence entre un pointeur sur une variable et un pointeur sur une fonction ? 
  2. Expliquez pourquoi il est important de déclarer le prototype d'une fonction avant son utilisation dans un programme en langage C.
  3. Quelle est la différence entre une déclaration et une définition de fonction ? Illustrez avec un exemple.
  4.   Définissez la récursivité et donnez un exemple de fonction récursive qui calcule la factorielle d’un nombre.
  5.  Expliquez le concept de pile d’appels (call stack) en relation avec les fonctions. Comment est-elle affectée par des appels récursifs ?
  6. Pourquoi les dépassements de pile (stack overflow) peuvent-ils survenir lors de l’utilisation de fonctions ?
  7. Quels sont les avantages et les inconvénients de la récursivité par rapport à une boucle classique ?
  8. QCMs :
  1. Une fonction en langage C est définie par :
    • Son nom seul.
    • son nom et le type de valeur retournée.
    • son nom seul.
    • Le type de retour, le nom, le nombre et les types d’arguments formels de la fonction.

  1. Le langage C réalise-t-il le passage d’arguments par valeur ou par adresse ?
    • Par valeur pour les constantes et par adresse pour les variables.
    • Par adresse pour les pointeurs et les tableaux, par valeur pour les variables et les constantes.
    • Par valeur quel que soit le type d’arguments à la fonction appelée.

  1. En langage C, le retour de fonction :
    • Doit être d’un type cohérent avec le type du retour de la fonction.
    • Ne peut retourner qu’un résultat à la fois.
    • Peut retourner une structure.
    • Peut retourner le contenu d’un tableau.

  1. Une fonction qui retourne un pointeur peut :
    • Retourner un pointeur sur n’importe quelle variable locale.
    • Retourner un pointeur sur une zone mémoire correspondant aux variables globales.
    • Retourner un pointeur sur une zone mémoire allouée dynamiquement.

  1. Les types suivants existent en langage C  :
    • Caractère., Entier., Virgule flottante., Booléen.

  1. L’opérateur d’affectation en langage C est un opérateur sans statut particulier. Il est ainsi possible de réutiliser la constante fournie par une affectation. Par exemple, a = b = c = 1 ; affecte la valeur 1 aux variables c, b et a.
    • Non, l’opérateur d’affectation est un opérateur spécialisé.
    • Oui, l’opérateur d’affectation est un opérateur banalisé.

  1. En langage C, l’instruction composée est réalisée à partir d’instructions groupées dans un bloc entre deux accolades.
    • Oui. / Non.

  1. Une instruction simple est toujours terminée par un point-virgule.
    • Oui./ Non.

  1. En langage C, les instructions de contrôle permettant de faire des choix sont les suivantes :
    • if (expression) instruction else instruction, où la partie else est facultative.
    • if expression then instruction else instruction.
    • switch (expression) { case const1 : instructions ... case constn : instructions }.
    • case expression in const1 : instructions ... constn : instructions esac.

  1. En langage C, les instructions de contrôle permettant de faire des boucles sont les suivantes :
    • for (instruction; instruction; instruction) instruction.
    • for (expression; expression; expression) instruction.
    • while (expression) instruction.
    • do instruction while (expression).

PROBLEME : 06 PTS 

Pour l’enregistrement des étudiants du niveau 1 Informatique, l’autorité administrative décide de faire appel à vous en tant qu’informaticien pour le stockage de ces étudiants. Les opérations souhaitées pour le moment sont la consultation, l’enregistrement des étudiants, et leur gestion dans un fichier binaire. Pour une simulation de ce projet, il vous est demandé de prendre un échantillon de 500 étudiants. Vous devez produire un programme permettant de réaliser les tâches suivantes. Les informations sur un étudiant sont :    Matricule (chaîne de 20 caractères),  Nom (chaîne de 20 caractères),  Prénom (chaîne de 20 caractères),  Âge (entier),  Filière (chaîne de 20 caractères),  Niveau (entier).

 Questions :

1. Proposez une structure permettant de conserver un étudiant.
2. Proposez une structure permettant de conserver tous les étudiants.
3. Écrivez une fonction int rechercherEtudiant(ListeEtud* t, const char* mat) qui recherche un étudiant dans la liste en fonction de son matricule et retourne l’index de l’étudiant, ou -1 s’il n’existe pas.
4. Écrivez une procédure void afficherEtudiants(ListeEtud* t) qui affiche les informations complètes sur chaque étudiant.
5. Écrivez une fonction int sauvegarderEtudiantsBinaire(ListeEtud* t, const char* nomFichier) qui sauvegarde tous les étudiants dans un fichier binaire.
6. Écrivez une fonction int chargerEtudiantsBinaire(ListeEtud* t, const char* nomFichier) qui charge les étudiants depuis un fichier binaire et met à jour la liste des étudiants.

 

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