QCM de programmation 2 (une ou plusieurs réponses attendues)

Présentation :
  Voici un examen alternatif utilisé en 2020 et qui peut servir d'entrainement à la bonne gestion d'un code source en C. On pourra notamment constater qu'une bonne mise en forme du code améliore la lisibilité du programme. La phase essentielle de relecture permet de corriger les principales erreurs de programmation ; elle est aussi indispensable dès qu'un code source déjà produit doit être réutilisé et modifié. Elle est cruciale pour le langage C où les choix faits à différents niveaux par ses concepteurs compliquent trop souvent la relecture comme la conception du code.

  Les exemples des déficiences du C sont nombreux : au niveau du lexique : un symbole plutôt qu'un mot, symbole ! pour la négation... de la syntaxe : absence de then, do while (pour Repeat Until) et while do... des structures de données : caractères comme entiers relatifs... de la sémantique : gestion chaotique des caractères et des chaines, manque de contrôle dans la gestion des traitement comme des données... des mauvaises habitudes de programmation qui se transmettent d'une génération à l'autre... La liste serait longue, à tel point qu'on pourrait affirmer que le langage C est un très mauvais langage de programmation. Malheureusement, il est encore très utilisé et sa syntaxe bancale a inspiré de nombreux autres langages.

  Vous ne travaillerez donc pas ce QCM pour rien !
  1. écrire dans un fichier
    Pour ouvrir un fichier de nom "texte.txt" et y sauvegarder une chaine S avant de fermer ce fichier, j'écris en C :
    N.B. Une seule réponse.
  2. variable type chaine
    Pour définir une variable S de type chaine de caractères, je peux écrire en C :
  3. type structuré date
    Pour définir un type de données structuré TDS correspondant à une date, je peux écrire en C :
  4. somme des éléments d'un tableau (1D)
    Pour définir une fonction qui retourne la somme des éléments d'un tableau de réels, je peux écrire en C :
    N.B. une seule réponse valide.
  5. nombre de majuscules dans une chaine de caractères
    Pour obtenir le nombre N de majuscules contenues dans une chaine de caractères S non vide, je peux écrire en C :
  6. définition de la taille d'un tableau (1D)
    Pour définir la taille d'un tableau T de 52 éléments, je peux écrire en C :
  7. librairies
    Pour disposer des fonctions scanf et printf, je dois utiliser en C l'instruction
  8. type symbolique semaine
    Pour définir un type de données symbolique TDS listant les jours de la semaine, je peux écrire en C :
  9. affichage d'un tableau (1D)
    Pour afficher les éléments d'un tableau T de 23 réels, je peux écrire en C :
  10. type structuré contenant un tableau
    Pour définir un type structuré TS contenant un tableau d'au plus 25 réels ainsi que sa taille effective, je peux écrire en C :
  11. déclarer un tableau de 15x30 entiers
    Pour déclarer un tableau T à deux dimensions de 15×30 entiers, je peux écrire en C :
  12. taille d'une chaine de caractères saisie (difficulté du C)
    J'ai écrit en C :
      char S[10]={0};
      scanf("%s",S);
      for (i=0;i<=10;i++) printf("%c ",S[i]);
  13. définir un tableau de structure
    Pour gérer une librairie, j'ai défini en C un type structuré LIVRE contenant un Auteur, un Titre, et un prix. Pour définir un tableau T de 600 LIVRES, je peux écrire :
  14. afficher la table de multiplication
    Parmi les codes suivants, le(s)quel(s) permet(tent) d'afficher une table de multiplication bien mise en page ?
  15. retour par adresse dans procédure
    Pour avoir le prototype d'une procédure retournant les trois valeurs d'un temps donné en heures-minutes-secondes saisies par l'utilisateur, je peux écrire en C :
  16. définition des tailles d'un tableau (2D)
    Pour définir les tailles N et P d'un tableau T de 4x13 éléments (tableau à deux dimensions), je peux écrire en C :
  17. ouvrir un fichier en lecture
    Pour ouvrir un fichier et lire son premier élément qui est une chaine avant de fermer ce fichier, j'écris en C :
    N.B. Une seule réponse.
  18. que fait un algorithme
    Que fait cet algorithme ?
    Donnée : une chaine S de longueur n indicée de 0 à (n-1)
    Résultat : ...
    Pour i de 0 à ((n-1) mod 2) faire
        si S[i]≠S[n-1-i] alors Retourner Faux;
    Retourner Vrai.
  19. algorithme de saisie d'un tableau 2D d'entiers
    Je veux que l'utilisateur saisisse les valeurs d'un tableau à deux dimensions de 12×24 entiers, je peux écrire en C :
  20. utiliser un tableau de structure
    Pour gérer une librairie, j'ai défini en C un type structuré LIVRE contenant un Auteur, un Titre, et un prix, ainsi qu'un tableau T de 600 LIVRES,. Pour afficher l'Auteur, le Titre, et le Prix du premier livre, je peux écrire :
  21. lecture dans un fichier
    Pour placer proprement le contenu d'un fichier d'entiers dans un tableau de 11 entiers, en tenant compte du fait qu'on ne connait pas à l'avance le nombre d'entiers dans le fichier, je peux écrire en C :
  22. tirage aléatoire
    Pour obtenir un nombre aléatoire A compris entre 0 et n, je peux écrire en C :
  23. transfert conditionnel de tableau 2D vers 1D
    Pour transférer les valeurs positives d'un tableau D à deux dimensions de 10×10 valeurs vers un tableau U à une dimension de 100 valeurs, je peux écrire en C :
  24. moyenne des éléments d'un tableau de réels (1D)
    Pour définir une fonction MOYENNE qui retourne la moyenne des éléments d'un tableau T de N réels, je peux écrire en C :
    N.B. : une seule réponse juste.
  25. définir un tableau de réels prérempli de zéros
    Pour définir un tableau de 7 réels, on a écrit en C :float T[7]={0}; et dans cette instruction :
  26. retour par adresse dans procédure (bis)
    Pour avoir le prototype d'une procédure retournant les trois valeurs d'une date saisies par l'utilisateur, je peux écrire en C :
  27. que fait une fonction sur un tableau
    Que fait la fonction Quefaisje :
    float Quefaisje(int T[],int n) {
      int i; float k; k=0;
      for (i=0;i<n;i++) k=k+T[i];
      if (n==0) return 0 else return (k/n);
      }
  28. fonction retournant une structure
    Pour avoir le prototype d'une procédure qui donne une variable de type structuré DATE, contenant les valeurs de jour, mois et année saisies par l'utilisateur dans la fonction, je peux écrire en C :
  29. transfert de tableau 2D vers 1D
    Pour transférer les valeurs d'un tableau D à deux dimensions de 10×10 valeurs vers un tableau U à une dimension de 100 valeurs, je peux écrire en C :
  30. structure de structure
    J'ai défini un type structuré IDENTITE composé d'un Nom, d'un Prenom, et d'une Date correspondant à la date de naissance. Cette Date est de type structuré DATE qui comprend un Jour, un Mois, et une Année. Pour obtenir l'année de naissance d'une variable X de type identité, je peux écrire en C :
  31. saisie par caractères
    Que fais ce code C ?
      char c; do c=getchar() while (c!='\n');
  32. variable de type structuré Date avec valeur
    Pour définir une variable D, d'un type de données structuré DATE déjà défini et contenant les trois éléments Jour, Mois et Annee, qui corresponde au 12/06/2020, je peux écrire en C :
  33. que fait un programme
    Que fait ce code C ?
      k=0;
      for (i=0;i<10;i++) for (j=0;j<15;j++) if (T[i][j]==x) k++; printf("resultat :%d\n",k);
  34. que fait un programme (bis)
    Que fait ce code C ?
      k=0;
      for (i=0;i<10;i++) for (j=0;j<15;j++) if (T[i][j]>=x) k++;
      printf("resultat :%d\n",k);
  35. que fait un programme (ter)
    Que fait cette fonction C ?
    int Retourner(int float T[], int n) {
      int i; int k=0;
      for (i=0;i<n;i++) if (T[i]==x) k++;
      }
  36. que fait un programme (suite)
    Que fait ce code C ?
    k=0; x=0;
    for (i=0;i<10;i++) for (j=0;j<15;j++) if (T[i][j]<x) k++; printf("resultat :%d\n",k);
  37. que fait une fonction sur un tableau (ter)
    Que fait la fonction suivante :
    float Queferaisje(float * T[],int * n) {
      int i; float k; k=T[0];
      for (i=1;i<(*n);i++) if (T[i]>k) k=k+T[i];
      return k;
      }
  38. écriture des boucles
    Qu'affiche ce code C ?
    for (i=1;i++;i<10) for (j=1;j++;j<10) printf("%d ",i*j);
  39. indiçage d'une chaine
    Que fait la fonction suivante ?
    int TRUC(char S[]) {
      int n=0;
      if (S==NULL) return 0;
      while ((*(S+n)!='\0') n++;
      return n;
      }
  40. fonction retournant une structure
    Pour créer une fonction REMPLIR qui permet d'obtenir un étudiant Jacques MARTIN âgé de 19 ans, en remplissant les différents champs d'une variable structuré ETUDIANT contenant un Nom, un Prenom, et un Age, afin que cet étudiant soit disponible dans le programme, je peux écrire en C :
  41. sauvegarde d'un tableau d'entiers dans un fichier
    Je dispose d'un tableau T de dix entiers. Pour sauvegarder ce tableau dans un fichier F déjà ouvert, je peux écrire en C :
  42. que fait une fonction sur un tableau (bis)
    Que fait la fonction Quefaire :
      float Quefaire(float T[],int n) {
      int i; float k; k=0;
      for (i=0;i<n;i++) k=k+T[i];
      return k;
        }
  43. type structuré heure
    Pour définir un type de données HEURE correspondant à une heure, je peux écrire en C :
  44. somme des éléments d'un tableau d'entiers (1D)
    Pour définir une fonction SOMME qui retourne la somme des éléments d'un tableau T de N entiers, je peux écrire en C :
    N.B. : une seule réponse juste.
  45. type symbolique mois
    Pour définir un type de données symbolique MOIS listant les jours de la semaine, je peux écrire en C :
  46. sauvegarde dans un fichier d'un tableau de structures
    Je dispose d'un tableau T de dix DATE, le type date étant un type structuré composé d'un Jour, d'un Mois et d'une Annee. Pour sauvegarder ce tableau dans un fichier F déjà ouvert en lecture, je peux écrire en C :