QCM : Bases du langage C — 23 questions

Questions et réponses du QCM

1. Quelle différence décrit correctement les boucles while et do while ?

while regroupe une progression, tandis que do while déclare une initialisation.
while choisit entre deux branches, tandis que do while définit une constante.
while exécute son bloc au moins une fois, tandis que do while peut l’éviter.
while peut ne pas exécuter son bloc, tandis que do while l’exécute au moins une fois.

while peut ne pas exécuter son bloc, tandis que do while l’exécute au moins une fois.

Explication

La boucle while évalue la condition avant d’entrer dans son bloc et peut donc ne l’exécuter aucune fois. La boucle do while exécute d’abord le bloc, puis teste la condition, ce qui garantit une première exécution.

2. Comment peut-on caractériser la structure générale d’un programme C ?

Un fichier composé exclusivement de fonctions prédéfinies
Un ensemble libre d’instructions sans organisation imposée
Une succession de commandes exécutées dans l’ordre d’écriture
Une suite ordonnée de déclarations et de définitions

Une suite ordonnée de déclarations et de définitions

Explication

Un programme C est une suite ordonnée de déclarations ou de définitions de types, de variables et de sous-programmes. L’ordre et la présence de plusieurs catégories d’éléments distinguent cette structure d’un simple ensemble d’instructions.

3. Quelle forme générale traduit en C une boucle « Pour » comportant une initialisation, une condition et un pas ?

repeat (initialisation; condition; pas) { Action }
while (initialisation, condition, pas) { Action }
if (initialisation; condition; pas) { Action }
for (initialisation; condition; pas) { Action }

for (initialisation; condition; pas) { Action }

Explication

La boucle for regroupe l’initialisation, la condition et le pas entre parenthèses, puis place l’action dans son bloc. La structure while ne possède pas cette organisation en trois champs, et if correspond à une alternative.

4. Quelle règle s’applique à un nom de type, de variable ou de fonction en C ?

Il doit être déclaré dans chaque bloc où il apparaît
Il peut être utilisé avant toute déclaration
Il doit être déclaré avant son utilisation
Il doit être défini après chaque utilisation

Il doit être déclaré avant son utilisation

Explication

En C, un nom de type, de variable ou de fonction doit être déclaré avant d’être utilisé. Une déclaration répétée dans chaque bloc n’est pas la règle générale, car la portée dépend du contexte de déclaration.

5. Que fait principalement la directive #define lorsqu’elle est utilisée pour créer une constante symbolique ?

Elle réserve une zone mémoire et impose un type numérique.
Elle effectue un remplacement textuel sans typer la constante.
Elle vérifie la valeur pendant l’exécution avant chaque utilisation.
Elle transforme l’identifiant en variable modifiable par affectation.

Elle effectue un remplacement textuel sans typer la constante.

Explication

La directive #define remplace les occurrences de l’identifiant par la valeur indiquée, sans attribuer de type à cette constante. La déclaration const, contrairement à cette directive, permet de déclarer une constante typée.

6. Quelle quantité de mémoire une variable double occupe-t-elle généralement en C ?

1 octet
4 octets
8 octets
2 octets

8 octets

Explication

Une variable de type double occupe 8 octets en mémoire. Le type float, souvent confondu avec double, occupe 4 octets.

7. Quel opérateur relationnel teste qu’une valeur est inférieure ou égale à une autre ?

≤\leq, écrit <= en C
!=!=, utilisé pour tester l’inégalité
==, utilisé pour comparer deux valeurs
<<, écrit < en C

$$\leq$$, écrit <= en C

Explication

En C, l’opérateur <= signifie « inférieur ou égal » et inclut donc le cas d’égalité. L’opérateur < exclut l’égalité, tandis que = sert à l’affectation et != teste la différence.

8. Quelle instruction permet de saisir successivement les valeurs de trois variables au clavier ?

cout >> a >> b >> c;
cout << a << b << c;
cin >> a >> b >> c;
cin << a << b << c;

cin >> a >> b >> c;

Explication

L’instruction cin >> a >> b >> c; récupère successivement les données saisies pour les trois variables. cout est destiné à l’affichage, et l’opérateur << ne sert pas à extraire une valeur depuis le clavier.

9. Quelle écriture permet à cout d’afficher un message ou une variable à l’écran ?

cin >> donnée
cout >> donnée
cout << donnée
cin << donnée

cout << donnée

Explication

cout envoie un message, une variable ou une constante vers l’écran avec l’opérateur <<. cin sert au contraire à récupérer une donnée fournie par l’utilisateur avec l’opérateur >>.

10. Quelle valeur produit l’expression entière 1/21 / 2 en C lorsque les deux opérandes sont des entiers ?

Elle produit 11 après arrondi du quotient
Elle provoque une erreur liée aux opérandes
Elle produit 00 par division entière
Elle produit 0,50{,}5 par division réelle

Elle produit $$0$$ par division entière

Explication

Avec deux opérandes entiers, C effectue une division entière et conserve la partie entière du quotient, soit 00. La valeur 0,50{,}5 correspondrait à une division réelle, obtenue avec des opérandes réels.

11. Quelle correspondance entre les types algorithmiques et les types C est correcte ?

Un entier correspond à bool, et un booléen à short.
Un entier correspond à int ou short, et un réel à float ou double.
Un entier correspond à float ou double, et un réel à int ou short.
Un booléen correspond à char, et un caractère à bool.

Un entier correspond à int ou short, et un réel à float ou double.

Explication

En C, les entiers sont représentés par int ou short, tandis que les réels utilisent float ou double. La confusion fréquente consiste à attribuer float et double aux entiers, alors qu’ils représentent des nombres réels.

12. Quelle structure C traduit correctement « TantQue condition Faire Action » ?

while (condition) { Action }
if (condition) { Action } else { Action }
for (condition) { Action }
do (condition) { Action } while

while (condition) { Action }

Explication

La boucle while évalue la condition et exécute Action tant que cette condition est satisfaite. Une structure if réalise un choix ponctuel, et for sert à exprimer une boucle avec initialisation, condition et pas.

13. Quelle fonction est appelée en premier lors de l’exécution d’un programme C ?

La fonction incluse par une bibliothèque
La fonction appelée par une variable globale
La fonction main
La fonction déclarée en dernier

La fonction main

Explication

La fonction main constitue le point de départ de l’exécution et peut appeler les autres sous-programmes. Une fonction incluse par une bibliothèqu'ou déclarée ailleurs n’est pas automatiquement le point d’entrée.

14. Pourquoi faut-il éviter de comparer directement deux nombres réels avec l’opérateur == en C ?

Parce que == transforme les nombres réels en nombres entiers avant le test
Parce que les nombres réels ne peuvent pas être utilisés dans une condition
Parce que == ne peut comparer que des chaînes de caractères en C
Parce que leur représentation codée peut introduire de petites erreurs de précision

Parce que leur représentation codée peut introduire de petites erreurs de précision

Explication

La représentation informatique des nombres réels peut comporter de petites approximations, de sorte que deux calculs théoriquement égaux ne possèdent pas forcément le même codage. Transformer les valeurs en entiers ou interdire leur emploi dans une condition ne décrit pas le problème réel.

15. Quelle association décrit correctement les délimiteurs d’un bloc et la terminaison d’une instruction simple en C ?

Les parenthèses délimitent un bloc et le deux-points termine l’instruction
Les crochets délimitent un bloc et la virgule termine l’instruction
Les accolades délimitent un bloc et le point-virgule termine l’instruction
Le point-virgule délimite un bloc et les accolades terminent l’instruction

Les accolades délimitent un bloc et le point-virgule termine l’instruction

Explication

Les accolades ouvrante et fermante délimitent un bloc, tandis que le point-virgule termine une instruction simple. Le point-virgule n’a donc pas le rôle de délimiter un bloc.

16. Quel identificateur respecte les règles de nommage du langage C ?

total-2
total_2
totalé
total 2

total_2

Explication

Un identificateur peut contenir des lettres, des chiffres et un soulignement, à condition de commencer par une lettre. Un tiret, un espace ou un accent rend les autres formes invalides.

17. Qui a publié en 1978 l’ouvrage « The C programming language » ?

Niklaus Wirth et Dennis M. Ritchie
Bjarne Stroustrup et Dennis M. Ritchie
Brian W. Kernighan et Dennis M. Ritchie
Brian W. Kernighan et James Gosling

Brian W. Kernighan et Dennis M. Ritchie

Explication

Brian W. Kernighan et Dennis M. Ritchie ont publié cet ouvrage en 1978. Bjarne Stroustrup est associé au développement du C++, mais il n’est pas coauteur de cet ouvrage.

18. Dans quel ordre une instruction simple placée dans un programme est-elle normalement exécutée ?

Selon un ordre aléatoire déterminé par la mémoire.
En exécutant d’abord les instructions les plus longues.
De haut en bas, dans le sens de la lecture.
De bas en haut, en remontant vers l’appelant.

De haut en bas, dans le sens de la lecture.

Explication

Une instruction simple est exécutée séquentiellement, de haut en bas et dans le sens de la lecture. Les autres ordres ne correspondent pas au déroulement séquentiel normal des instructions.

19. Quelle valeur renvoie l’expression 5%125 \% 12 en C ?

55, car le reste est le dividende lorsque le diviseur est plus grand
00, car douze ne se divise pas par cinq
22, car cinq est le quotient entier de douze par cinq
1212, car le reste reprend le diviseur utilisé

$$5$$, car le reste est le dividende lorsque le diviseur est plus grand

Explication

L’opérateur modulo renvoie le reste de la division entière ; comme 55 est inférieur à 1212, le reste de 55 par 1212 vaut 55. L’opérateur // donnerait un quotient entier, ce qui correspond à une autre opération.

20. Quelle évolution concerne le langage C entre 1983 et 1988 ?

Une fusion des compilateurs C et Pascal
Une création du langage C à partir du langage assembleur
Une adoption comme langage principal du système Unix
Une normalisation ANSI menée avec le C++

Une normalisation ANSI menée avec le C++

Explication

Entre 1983 et 1988, le langage C fait l’objet d’une normalisation ANSI avec le C++. L’ouvrage fondateur et la création du langage correspondent à une période antérieure, tandis que Pascal n’est pas à l’origine de cette normalisation.

21. Quelle traduction en C correspond à l’alternative « Si condition Alors Action1 Sinon Action2 » ?

for (condition) { Action1 } otherwise { Action2 }
if (condition) { Action2 } else { Action1 }
while (condition) { Action1 } else { Action2 }
if (condition) { Action1 } else { Action2 }

if (condition) { Action1 } else { Action2 }

Explication

La structure if exécute Action1 lorsque la condition est vraie, et else exécute Action2 dans le cas contraire. La structure while sert à répéter une action, tandis que l’ordre des actions est inversé dans la dernière proposition.

22. Quelle propriété caractérise une constante dans un programme C ?

Sa valeur est recalculée après chaque instruction exécutée.
Son nom doit être remplacé par une adresse mémoire à chaque lecture.
Son contenu dépend automatiquement du type de la variable voisine.
Sa valeur ne peut pas être modifiée pendant l’exécution.

Sa valeur ne peut pas être modifiée pendant l’exécution.

Explication

Une constante désigne une valeur qui reste non modifiable pendant l’exécution du programme. Une variable, en revanche, peut recevoir une nouvelle valeur au cours de cette exécution.

23. Quels éléments la structure for regroupe-t-elle dans sa forme générale ?

Une lecture, une écriture et une comparaison entre deux variables.
Une condition, un bloc else et une instruction de sortie immédiate.
Une déclaration de type, une adresse mémoire et une valeur constante.
Une initialisation, une condition d’itération et une instruction de progression.

Une initialisation, une condition d’itération et une instruction de progression.

Explication

La structure for rassemble une initialisation, une expression de condition et une instruction de progression. Elle se distingue ainsi d’un if, qui sélectionne une branche selon une condition, sans organiser ces trois éléments d’itération.

Révisez avec les flashcards

Mémorisez les réponses avec 51 flashcards sur Bases du langage C.

En quelle année Brian W. Kernighan et Dennis M. Ritchie ont-ils publié « The C programming language » ?

En 1978.

Qui a publié « The C programming language » en 1978 ?

Brian W. Kernighan et Dennis M. Ritchie.

Entre quelles années le langage C a-t-il été normalisé par l'ANSI ?

Entre 1983 et 1988.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Bases du langage 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