1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

Examen de Fin de Module langage C 2015 1 ère année

abdelouafiDec 27, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      165
      Likes Received:
      7
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Partie I : Théorique (11 pts)

      1. C’est quoi le rôle d’un compilateur ? (2 pts)

      2. Quelle est la différence entre le passage de paramètres d’une fonction par adresse et le passage de paramètres par valeur ? donner un exemple. (3 pts)

      3. Citer quatre fonctions de la bibliothèque h. (2 pts)

      4. Que sera le résultat d’exécution des programmes suivants : (4 pts)
      Programme 1

      Code:
      int i=10;
      
      for(i=0;i<10;i++) printf("%d \n",i);
      Programme 2:

      Code:
      int i=0;
      
      while(i<10);
      
      i++;
      
      printf("%d" \n",i);
      Programme 3:

      Code:
      int i=0,j=10;
      
      do{
      
        printf("%d\n",i);
      
        i++;
      
        j=i+j;
      
      } while((i<10) && (j<20));
      Programme 4:

      Code:
      int i=1;
      
      switch(i){
      
        case 0 :  puts("0");
      
        case 1:   puts("1");
      
        case 2:   puts("2");
      
        default: puts("good by ");
      
      }

      Partie II : Pratique (29 pts)

      Exercice 1 : (5 pts)

      On considère la suite numérique définie par :

      U1 = 1

      U2 = 2 et

      Un = 2 (Un-1 + Un-2) (pour n>2)

      1. Ecrire une fonction qui retourne, le nième terme de cette suite ; (3 pts)

      2. Ecrire un programme qui calcule et affiche les termes, de cette suite, inférieurs ou égaux à un entier entré par l’utilisateur ; ainsi que leur somme. (2 pts)

      Exercice 2 : (24 pts)

      On souhaite créer un programme en langage C permettant de gérer les articles dans un stock informatique. Un Article est caractérisé par les champs code (entier), nom et prixUnitaire.

      1. Définir la structure (2 pts)

      2. Créer une procédure void lireArticle (Article articles [], int n) permettant de remplir un tableau de n articles. (3 pts)

      3. Créer une procédure void afficherArticle (Article articles [], int n) permettant d’afficher la liste des articles stockés dans le tableau articles. (2 pts)

      4. Créer une procédure void supprimerArticle (Article articles [], int * n, int code) permettant de supprimer un article stockés dans le tableau articles en fournissant son code. (3 pts)

      5. Créer une procédure void ajouterArticle (Article articles [], int *n) permettant d’ajouter un article dans le tableau articles. (2 pts)

      6. Créer une procédure void triByNom (Article articles [], int n) permettant d’afficher les articles classés par ordre alphabétique des noms. (2 pts)

      7. Créer une procédure void triByPrix (Article articles [], int n) permettant d'afficher la liste des articles classés du plus cher au moins cher. (2 pts)

      8. Créer une procédure void saveArtciles (Article articles [], int n) permettant d’enregistrer les articles dans un fichier texte, les valeurs des champs de chaque article seront séparées par « ; ». (3 pts)

      9. Ecrire un algorithme qui affiche à l’utilisateur le menu suivant : (5 pts)

      1) Lire les articles.

      2) Afficher les articles classés par ordre alphabétique des noms.

      3) Afficher les articles classés du plus cher au moins cher.

      4) Ajouter un nouvel article.
      5) Supprimer un article.

      6) Enregistrer les articles.
      7) Quitter le programme.


      Tapez votre choix :
       

      Attached Files:

      • 1.png
        1.png
        File size:
        4.4 KB
        Views:
        266
      • 2.png
        2.png
        File size:
        4.1 KB
        Views:
        268
      • 3.png
        3.png
        File size:
        4.2 KB
        Views:
        262
      Last edited: Dec 27, 2016
      Loading...
      Partie I : Théorique (11 pts)

      1. Un compilateur permet de : de vérifier la syntaxe du programme mais aussi de transformer le programme en langage machine.

      2. Quelle est la différence entre le passage de paramètres d’une fonction par adresse et le passage de paramètres par valeur ? donner un exemple :

      • Dans le passage par valeur : la fonction utilise une copie des paramètres effectifs. Après appel de la fonction les paramètres effectifs gardent leurs valeurs initiales.

      • Dans le passage par adresse : la fonction utilise les adresses des paramètres effectifs. Alors ces paramètres peuvent changer après appel de la fonction

      • oExemple : Fonction Permuter

      3. Citer quatre fonctions de la bibliothèque string.h :

      o strlen : renvoie la longueur d’une chaine

      o strcpy : copie une chaine dans une autre

      o strcmp : compare deux chaines

      o strcat : concatène deux chaines

      4. Que sera le résultat d’exécution des programmes suivants :

      Programme 1:
      [​IMG]

      Programme 2:
      Boucle infini
      Programme 3:
      [​IMG]
      Programme 4:
      [​IMG]


      Partie Pratique II:
      Exercice 1:
      Code:
      #include<stdio.h>
      int suite(int n){
          if(n==1) return 1;
              else if(n==2) return 2;
                  else return 2*(suite(n-2)+suite(n-1));
            
            
      
      }
      main(){
      
      int i,n,x,s=0;
      puts("donnez votre n :\n");
      scanf("%d",&i);
      puts("Entrer le nombre de termes: ");
          scanf("%d", &x);
              for(i = 1; i <= x ; i++){
                  printf("U(%d) = %d\n", i, suite(i));
                  s = s + suite(i);
              }
            
              printf("\nLa somme des termes : %d", s);
      }
      



      Exercice 2:
      Code:
          #include<stdio.h>
          #include<string.h>
           
          //Question 1 : Définition de la structure Article
          typedef struct {
              int code;
              char nom[20];
              float prix;
          } Article;
           
          //Question 2 : Lecture des articles
          void lireArticle (Article articles [], int n) {
              int i;
              for(i=0; i<n; i++){
                  printf("Article %d : \n", i+1);
                  printf("Entrer le code : ");
                  scanf("%d", &articles[i].code);
                  printf("Entrer le nom : ");
                  scanf("%s", articles[i].nom);
                  printf("Entrer le prix : ");
                  scanf("%f", &articles[i].prix);
              }
          }
           
          //Question 3 : Affichage de la liste des articles
          void afficherArticle (Article articles [], int n) {
              int i;
              for(i=0; i<n; i++){
                  printf("Article %d : \n", i+1);
              printf("Code : %d | ", articles[i].code);
                  printf("Nom : %s | ", articles[i].nom);
              printf("Prix : %.2f\n\n", articles[i].prix);
              }
          }
           
          //Question 4 : Suppression d'un article
          void supprimerArticle (Article articles [], int * n, int code) {
              int i, j;
              //On suppose si le code est unique
              for(i=0; i<*n; i++){
                  if(articles[i].code == code){
                      for(j=i; j<(*n)-1; j++){
                          articles[j] = articles[j+1];
                      }
                     
                      (*n)--;
                      //i--; si le code n'est pas unique
                  }
              }
          }
           
          //Question 5 : Ajout d'un article à la fin de la liste
          void ajouterArticle (Article articles [], int *n){
              //Ajout a la fin?
              printf("Entrer le code : ");
              scanf("%d", &articles[*n].code);
              printf("Entrer le nom : ");
              scanf("%s", articles[*n].nom);
          printf("Entrer le prix : ");
              scanf("%f", &articles[*n].prix);
              (*n)++;
          }
           
          //Question 6 : Tri de la liste des articles par ordre (Croissant) alphabétique des noms
          void triByNom (Article articles [], int n){
              int i, j;
              Article a;
              for(i=0; i<n; i++){
                  for(j=i;j<n;j++){
                      if(strcmp(articles[i].nom , articles[j].nom) == 1)
                      {
                          a = articles[i];
                             articles[i] = articles[j];
                             articles[j] = a;
                      }
                  }
              }
              puts("Liste des articles tries par nom:");
              afficherArticle(articles, n);
          }
          //Question 7 : Tri de la liste des articles du plus cher au moins cher (par ordre décroissant de prix)
          void triByPrix (Article articles [], int n){
              int i, j;
              Article a;
              for(i=0; i<n; i++){
                  for(j=i;j<n;j++){
                      if(articles[i].prix < articles[j].prix)
                      {
                          a = articles[i];
                             articles[i] = articles[j];
                             articles[j] = a;
                      }
                  }
              }
              puts("Liste des articles tries par prix:");
              afficherArticle(articles, n);
          }
           
          //Question 8 : Sauvegrade de la liste des articles dans un fichier texte
          void saveArtciles (Article articles [], int n){
              FILE *f;
              int i;
              f = fopen("articles.txt", "w");
              if(!f){
                  printf("Erreur de creation du fichier!");
                  return;
              }
              for(i=0; i<n; i++){
                  fprintf(f, "%d;%s;%.2f\n", articles[i].code, articles[i].nom, articles[i].prix);
              }
              fclose(f);
          }
           
          //Question 9 : Programme de test
          main(){
             
              //Article t[30] = {{1, "dsw", 300}, {2, "xue", 30}, {3, "adf", 380}}, * a;
              Article t[30], * a;
              int n, choix, code;
              do{
                  //Menu
                  puts("-------------Menu-------------");
                  puts("1:    Lire les articles.");
                  puts("2:    Afficher les articles classés par ordre alphabétique des  noms.");
                  puts("3:    Afficher les articles classés du plus cher au moins cher.");
                  puts("4:    Ajouter un nouvel article.");
                  puts("5:    Supprimer un article.");
                  puts("6:    Enregistrer les articles.");
                  puts("7:    Quitter le programme.");
                  puts("Tapez votre choix :");
                  scanf("%d", &choix);
                 
                  switch(choix){
                      case 1:
                              printf("Donner le nombre d'articles: ");
                              scanf("%d", &n);
                              lireArticle(t, n);
                              break;
                      case 2:
                              triByNom(t,n);
                              break;
                      case 3:                     
                              triByPrix(t,n);                   
                              break;       
                      case 4:
                              ajouterArticle(t, &n);
                              break;
                      case 5:
                              printf("Entrer le code de l'article a supprime: ");
                              scanf("%d", &code);
                              supprimerArticle(t, &n, code);
                              printf("Liste des articles apres suppression de l'article %d : \n", code);
                              afficherArticle(t, n);
                              break;
                      case 6:
                              saveArtciles(t, n);
                              printf("Liste sauvegardee dans le fichier articles.txt\n");
                              break;
                      case 7:
                              printf("Fin du programme\n");
                              break;
                      default:
                              printf("Choix invalid!\n");
                     
                  }
              }while(choix != 7);
          }
      

Share This Page

Share