QCM : Bases de la programmation en C (25 questions)

Questions et réponses du QCM

1. Quel est le rôle de la compilation dans le développement d’un programme en C ?

Vérifier le résultat du programme en simulant son exécution
Remplacer le programme principal par une suite de fichiers source
Transformer les commentaires en instructions exécutées par la machine
Construire un programme compréhensible par la machine à partir du code source

Construire un programme compréhensible par la machine à partir du code source

Explication

La compilation transforme le code source en un programme compréhensible par la machine. L’exécution teste le comportement du programme, mais ne constitue pas cette transformation.

2. Quelle différence caractérise une boucle do-while par rapport à une boucle while ?

Elle exécute le bloc avant le premier test de la condition.
Elle vérifie la condition avant d’exécuter le bloc pour la première fois.
Elle quitte la boucle dès que le bloc atteint une instruction continue.
Elle regroupe l’initialisation et l’incrémentation dans son en-tête.

Elle exécute le bloc avant le premier test de la condition.

Explication

Une boucle do-while exécute une première fois son bloc sans condition préalable, puis évalue la condition pour les itérations suivantes. La boucle while teste au contraire la condition avant la première exécution du bloc.

3. Quel est le rôle général d’une boucle dans un programme ?

Choisir entre plusieurs blocs selon la valeur d’une expression.
Interrompre l’exécution du programme après une instruction.
Répéter un bloc d’instructions en faisant progresser le résultat.
Déclarer une variable et fixer sa valeur initiale.

Répéter un bloc d’instructions en faisant progresser le résultat.

Explication

Une boucle répète un bloc d’instructions tout en faisant avancer le résultat. Le choix entre plusieurs blocs relève plutôt d’une structure conditionnelle.

4. Une action protégée par une condition composée avec && s’exécute si combien de conditions sont vraies ?

La majorité des conditions doivent être vraies.
Toutes les conditions doivent être vraies.
Toutes les conditions doivent être fausses.
Une seule condition vraie suffit.

Toutes les conditions doivent être vraies.

Explication

L’opérateur && correspond au ET logique : l’ensemble de la condition est vrai lorsque toutes ses conditions sont vraies. Avec ||, une seule condition vraie suffirait, ce qui est une règle différente.

5. Dans un if sans accolades, si deux instructions suivent immédiatement la condition, laquelle est conditionnelle ?

Seule la première instruction qui suit le if.
Seule la deuxième instruction qui suit le if.
Les deux instructions qui suivent le if.
Aucune instruction, car les accolades sont indispensables.

Seule la première instruction qui suit le if.

Explication

Sans accolades, seule l’instruction immédiatement consécutive au if est contrôlée par sa condition. La deuxième instruction s’exécute donc en dehors de ce if, contrairement à ce qui se passerait si les deux étaient placées dans un bloc délimité par des accolades.

6. Quels caractères délimitent un bloc d’instructions en C ?

Une accolade ouvrante au début et une accolade fermante à la fin
Une parenthèse ouvrante au début et une parenthèse fermante à la fin
Un crochet ouvrant au début et un crochet fermant à la fin
Un point-virgule au début et un point-virgule à la fin

Une accolade ouvrante au début et une accolade fermante à la fin

Explication

Un bloc d’instructions en C commence par `{` et se termine par `}`. Les parenthèses servent notamment à délimiter des expressions ou des paramètres, pas le bloc lui-même.

7. Quel rôle la fonction `main` joue-t-elle dans un programme C ?

Elle encadre les commentaires destinés à expliquer les instructions
Elle sert à définir les types utilisés par toutes les autres fonctions
Elle constitue l’unique porte d’entrée et contient les instructions principales
Elle transforme le code source en programme compréhensible par la machine

Elle constitue l’unique porte d’entrée et contient les instructions principales

Explication

La fonction `main` est l’unique porte d’entrée du programme et contient ses instructions principales. La compilation, et non `main`, construit un programme compréhensible par la machine.

8. Dans un programme, que représente une variable ?

Une valeur fixe qui ne peut pas être modifiée pendant l’exécution
Une instruction qui convertit une valeur vers un autre type
Un nom réservé que le compilateur utilise pour exécuter le programme
Un conteneur qui stocke une valeur pouvant être remplacée

Un conteneur qui stocke une valeur pouvant être remplacée

Explication

Une variable est un conteneur qui stocke une valeur et peut recevoir une nouvelle valeur. Une valeur qui ne change pas pendant l’exécution correspond plutôt à une constante.

9. Quand une instruction if exécute-t-elle le bloc d’actions qu’elle contrôle ?

Lorsque la condition entre parenthèses est vraie.
Après chaque évaluation, que la condition soit vraie ou fausse.
Lorsque toutes les instructions du bloc sont vraies.
Lorsque la condition entre parenthèses est fausse.

Lorsque la condition entre parenthèses est vraie.

Explication

Une instruction if exécute son bloc lorsque sa condition, écrite entre parenthèses, est vraie; les accolades en délimitent les actions. Une condition fausse ne déclenche pas ce bloc, mais peut mener à un bloc else s’il est présent.

10. Quelle forme déclare une variable entière appelée `compte` et lui attribue une valeur dans une instruction ultérieure ?

Déclarer `compte int;`, puis écrire `compte = 7;`
Déclarer `int compte;`, puis écrire `compte = 7;`
Déclarer `int compte;`, puis écrire `int = compte 7;`
Déclarer `compte;`, puis écrire `int compte = 7;`

Déclarer `int compte;`, puis écrire `compte = 7;`

Explication

En C, la déclaration indique d’abord le type, puis le nom; une affectation ultérieure peut ensuite donner une valeur à la variable. Écrire `compte int;` inverse l’ordre requis pour la déclaration.

11. Dans l’expression « total = prix », quel rôle joue l’opérateur = ?

Il échange les valeurs contenues dans total et prix.
Il additionne total et prix et stocke leur somme.
Il attribue à total la valeur de prix.
Il compare total et prix pour vérifier leur égalité.

Il attribue à total la valeur de prix.

Explication

L’opérateur = affecte à la variable située à gauche la valeur de l’expression située à droite. Contrairement à l’opérateur ==, il ne vérifie pas l’égalité des deux valeurs.

12. Quel type C est destiné à stocker un caractère et occupe un octet ?

`double`
`float`
`char`
`int`

`char`

Explication

Le type `char` représente un caractère et occupe un octet. `int` sert à stocker un entier et occupe quatre octets.

13. Quel format printf convient à l’affichage d’un entier hexadécimal ?

%c
%d
%x
%ld

%x

Explication

Le format %x correspond à l’affichage d’un entier en hexadécimal. Le format %d sert à un entier décimal, tandis que %ld désigne un entier long.

14. Dans une condition logique, que signifie l’opérateur || ?

Toutes les conditions doivent être vraies.
Au moins une des conditions doit être vraie.
Toutes les conditions doivent être fausses.
Les valeurs des conditions sont comparées pour vérifier leur égalité.

Au moins une des conditions doit être vraie.

Explication

L’opérateur || réalise un OU logique : une seule condition vraie suffit. L’opérateur && réalise plutôt un ET logique, qui demande que toutes les conditions soient vraies.

15. Comment appelle-t-on le programme écrit par le programmeur avant sa transformation en programme compréhensible par la machine ?

Le code machine
Le fichier objet
Le code source
Le programme exécutable

Le code source

Explication

Le code source est le programme rédigé par le programmeur. Un exécutable est, au contraire, un programme compilé que la machine peut exécuter.

16. Une valeur entière est affectée à une variable d’un autre type sans cast écrit par le programmeur; comment caractériser la conversion effectuée par le compilateur ?

C’est une déclaration, qui attribue automatiquement le nom de la variable
C’est une initialisation, qui fixe le type de la variable
C’est une conversion implicite, réalisée automatiquement
C’est une conversion explicite, demandée par un cast

C’est une conversion implicite, réalisée automatiquement

Explication

Une conversion implicite est effectuée automatiquement par le compilateur lors d’une affectation entre types différents. Une conversion explicite exige au contraire un cast écrit par le programmeur.

17. Quel est le rôle de scanf() dans un programme C ?

Convertir un texte constant en instruction et l’exécuter dans le programme.
Comparer une saisie à une chaîne et afficher un résultat de comparaison.
Afficher une valeur en fonction d’un format et l’envoyer à l’écran.
Lire une saisie en fonction d’un format et stocker la donnée dans une variable.

Lire une saisie en fonction d’un format et stocker la donnée dans une variable.

Explication

scanf() lit les données saisies par l’utilisateur, et ses arguments indiquent le format attendu ainsi que la variable où stocker la donnée. printf() sert à afficher des valeurs plutôt qu’à lire une saisie.

18. Dans un appel à scanf(), comment faut-il généralement transmettre une variable entière à remplir ?

En plaçant son nom entre guillemets.
En ajoutant un * après son nom.
En faisant précéder son nom de %.
En faisant précéder son nom de &.

En faisant précéder son nom de &.

Explication

Pour une variable ordinaire, scanf() reçoit son adresse, indiquée par & devant son nom. Cette règle ne s’applique pas aux chaînes de caractères, ce qui explique pourquoi l’omettre pour une variable entière est incorrect.

19. Dans une boucle while, quand la condition est-elle évaluée par rapport à l’exécution du bloc ?

Elle est testée une fois à l’initialisation, puis n’est plus évaluée.
Elle est testée avant le bloc, puis de nouveau avant chaque répétition.
Elle est testée après le bloc, puis de nouveau après chaque répétition.
Elle est testée uniquement lorsqu’une instruction break est rencontrée.

Elle est testée avant le bloc, puis de nouveau avant chaque répétition.

Explication

Une boucle while teste sa condition avant d’exécuter son bloc et recommence tant que celle-ci reste satisfaite. Une boucle do-while, contrairement à while, exécute son bloc avant le premier test.

20. Quel opérateur de C calcule le reste de la division de deux nombres entiers ?

-
/
%
*

%

Explication

L’opérateur % produit le reste de la division, tandis que / réalise la division elle-même. L’opérateur * effectue une multiplication et ne donne pas le reste.

21. Si x vaut 3 au départ, que valent b et x après l’instruction « b = x++ » ?

b vaut 2 et x vaut 3.
b vaut 3 et x vaut 4.
b vaut 3 et x vaut 2.
b vaut 4 et x vaut 4.

b vaut 3 et x vaut 4.

Explication

Avec l’incrémentation postfixée, la valeur initiale de x est affectée à b avant que x augmente de 1. L’incrémentation préfixée décrémenterait d’abord x dans l’expression « --x », mais ce n’est pas l’opération utilisée ici.

22. Quel énoncé décrit correctement printf() en C ?

Cette fonction lit une saisie, peut la formater et nécessite stdio.h.
Cette fonction affiche du texte formaté et nécessite l’inclusion de stdlib.h.
Cette fonction affiche du texte, peut le formater et nécessite stdio.h.
Cette fonction compare des chaînes saisies et nécessite l’inclusion de string.h.

Cette fonction affiche du texte, peut le formater et nécessite stdio.h.

Explication

printf() sert à afficher du texte, notamment sous une forme formatée, et son utilisation nécessite stdio.h. scanf() lit des données saisies par l’utilisateur au lieu de les afficher.

23. Un programme doit répéter une opération un nombre de fois déterminé à l’avance : quelle boucle convient le mieux ?

Une boucle for, car le nombre d’itérations est connu.
Une boucle do-while, car elle fixe le nombre d’itérations dans son en-tête.
Une boucle while, car le nombre d’itérations est connu.
Une instruction break, car elle compte les répétitions prévues.

Une boucle for, car le nombre d’itérations est connu.

Explication

La boucle for est adaptée lorsque le nombre d’itérations est connu. La boucle while convient plutôt lorsque ce nombre est inconnu, mais qu’une condition d’arrêt est disponible.

24. Dans une structure switch, quel est le rôle de default ?

Vérifier si plusieurs conditions sont vraies en même temps.
Fournir les instructions du cas par défaut.
Associer des instructions à une valeur explicitement indiquée.
Répéter le cas correspondant jusqu’à ce que la variable change.

Fournir les instructions du cas par défaut.

Explication

Dans switch, default fournit les instructions du cas par défaut, tandis que les étiquettes case désignent des valeurs explicites. Une étiquette case ne remplace donc pas le traitement général prévu par default.

25. Dans un programme C, comment peut-on écrire un commentaire qui s’étend sur plusieurs lignes ?

En plaçant `//` au début de chaque ligne du commentaire
En encadrant le commentaire par `/*` et `*/`
En plaçant `#` au début de la première ligne du commentaire
En encadrant le commentaire par `{` et `}`

En encadrant le commentaire par `/*` et `*/`

Explication

La forme `/* … */` encadre un commentaire de bloc, tandis que `//` introduit un commentaire sur une ligne. Répéter `//` sur plusieurs lignes crée plusieurs commentaires d’une ligne plutôt qu’un bloc encadré.

Révisez avec les flashcards

Mémorisez les réponses avec 55 flashcards sur Bases de la programmation en C.

Qu’est-ce que le code source ?

Le programme écrit par le programmeur.

Que produit la compilation à partir du code source ?

Un programme compréhensible par la machine.

Par quel signe chaque instruction en C se termine-t-elle ?

Par un point-virgule.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Bases de la programmation en C.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM