QCM : Bases du langage C++ — 45 questions

Questions et réponses du QCM

1. Quelle distinction décrit correctement la programmation informatique et l’algorithmique ?

La programmation décrit les erreurs, tandis que l’algorithme stocke les informations dans la mémoire.
La programmation codifie les instructions, tandis que l’algorithme décrit une solution indépendamment du langage.
La programmation teste les résultats, tandis que l’algorithme compile les instructions en langage machine.
La programmation organise les données, tandis que l’algorithme exécute directement les périphériques.

La programmation codifie les instructions, tandis que l’algorithme décrit une solution indépendamment du langage.

Explication

La programmation permet de communiquer des instructions codifiées à une machine, alors que l’algorithme décrit la solution sans dépendre d’un langage particulier. Confondre ces notions revient à attribuer au programme le rôle de conception générale de la solution.

2. Quel ensemble d’objectifs correspond à la fin du module de programmation ?

Analyser des réseaux, administrer des serveurs, créer des bases de données et programmer des périphériques.
Connaître les outils C/C++, coder des programmes simples, appliquer les bonnes pratiques, tester et déboguer.
Rédiger des algorithmes abstraits, éviter les tests, compiler des bibliothèques et documenter des systèmes.
Mémoriser des langages théoriques, concevoir des circuits, assembler des machines et mesurer leurs signaux.

Connaître les outils C/C++, coder des programmes simples, appliquer les bonnes pratiques, tester et déboguer.

Explication

Le module vise la maîtrise d’outils génériques en C/C++, la réalisation de programmes simples, le respect des bonnes pratiques ainsi que les tests et le débogage. La compilation seule ne suffit pas, car un programme doit aussi être vérifié et corrigé dans son comportement.

3. Quel document un étudiant peut-il utiliser pendant l’évaluation et dans quelles limites de format ?

Un recueil numérique de cinq pages A4 rédigé après chaque évaluation.
Un manuel imprimé de deux pages A3 préparé pour l’ensemble du module.
Une fiche manuscrite de dix pages A4 regroupant toutes les séquences.
Une fiche pratique manuscrite de deux à trois pages A4 par séquence.

Une fiche pratique manuscrite de deux à trois pages A4 par séquence.

Explication

L’évaluation autorise les fiches pratiques manuscrites, limitées à deux ou trois pages A4 au maximum par séquence. Un document numérique ou un format dépassant cette limite ne respecte pas la règle indiquée.

4. Dans quel ordre faut-il construire une fiche pratique au cours du module ?

La compléter en cours, la finaliser avant les TD, la préparer en TP, puis la résumer avant l’examen.
La préparer après le cours, la mémoriser en TD, la recopier en TP, puis la modifier pendant l’évaluation.
La mettre au propre avant le cours, la préparer en TD, la compléter en TP, puis la corriger après l’évaluation.
La préparer avant le cours, la compléter en cours, l’enrichir en TD et TP, puis la mettre au propre.

La préparer avant le cours, la compléter en cours, l’enrichir en TD et TP, puis la mettre au propre.

Explication

La fiche se construit progressivement : préparation avant le cours magistral, complément pendant ce cours, enrichissement en TD et TP, puis réalisation de la version finale. Commencer par la mise au propre inverse cette progression pédagogique.

5. Quels éléments constituent un système électronique numérique complet ?

Une mémoire, un clavier et un programme principal sans unité chargée des opérations.
Une unité centrale, un langage de programmation et un capteur dépourvu de ports.
Une unité centrale, une mémoire et des ports d’entrée/sortie reliés aux périphériques.
Un compilateur, un algorithme et un écran réunis dans une unité de stockage.

Une unité centrale, une mémoire et des ports d’entrée/sortie reliés aux périphériques.

Explication

Le système comprend une unité centrale pour les opérations, une mémoire pour stocker l’information et des ports d’entrée/sortie pour communiquer avec les périphériques. La mémoire ne réalise donc pas le traitement général, qui relève de l’unité centrale.

6. Comment un système intelligent réalise-t-il une tâche impliquant un capteur et un actionneur ?

Il transfère l’information entre mémoire et unité centrale, puis entre unité centrale et périphériques.
Il fait communiquer les périphériques entre eux sans transfert par l’unité centrale.
Il conserve les données dans les ports et laisse la mémoire commander directement l’actionneur.
Il envoie les mesures du capteur à la mémoire, qui produit sans traitement la commande du moteur.

Il transfère l’information entre mémoire et unité centrale, puis entre unité centrale et périphériques.

Explication

La réalisation d’une tâche repose sur les transferts entre la mémoire et l’unité centrale, puis entre l’unité centrale et les périphériques. La mémoire conserve l’information, mais l’unité centrale l’exploite pour piloter les périphériques ou recevoir leur action.

7. Quel est le rôle d’un compilateur dans un système informatique ?

Transférer des informations entre la mémoire, l’unité centrale et les périphériques.
Stocker les données d’un programme afin que l’unité centrale puisse les consulter.
Décrire une solution algorithmique indépendante de la machine et du langage utilisé.
Convertir un programme d’un langage intermédiaire en un programme en langage machine.

Convertir un programme d’un langage intermédiaire en un programme en langage machine.

Explication

Un compilateur transforme un programme écrit dans un langage intermédiaire en un autre programme exprimé en langage machine. Décrire une solution indépendante du langage correspond plutôt au pseudo-code, tandis que le stockage relève de la mémoire.

8. Quelle définition correspond à un algorithme ?

Une collection de commentaires qui explique un programme sans effectuer de traitement sur les données.
Un programme compilé qui transforme automatiquement le langage machine en langage intermédiaire.
Un ensemble de composants électroniques qui échange des informations avec des périphériques.
Une suite finie d’instructions ordonnées qui traite des données pour résoudre une tâche et produire un résultat.

Une suite finie d’instructions ordonnées qui traite des données pour résoudre une tâche et produire un résultat.

Explication

Un algorithme est une suite d’instructions appliquées dans un ordre précis à un nombre fini de données pour résoudre une tâche. Un programme compilé et des composants électroniques appartiennent à d’autres niveaux de description.

9. Pourquoi un algorithme doit-il prévoir les cas d’erreur ?

Pour définir le comportement de la machine dans toutes les situations et rendre le programme robuste et reproductible.
Pour remplacer la déclaration des variables par une liste complète des périphériques disponibles.
Pour transformer automatiquement le pseudo-code en langage machine lors de chaque exécution.
Pour permettre au programme principal de s’exécuter sans respecter l’ordre des instructions prévues.

Pour définir le comportement de la machine dans toutes les situations et rendre le programme robuste et reproductible.

Explication

Prévoir les cas d’erreur permet de spécifier le comportement de la machine dans toutes les situations, ce qui renforce la robustesse et la reproductibilité. Cela ne dispense pas de définir les variables ni ne transforme automatiquement un pseudo-code en programme exécutable.

10. Quelle caractéristique distingue le pseudo-code d’un programme écrit en C++ ?

Le pseudo-code est réservé aux périphériques, tandis que le C++ sert à représenter les solutions abstraites.
Le pseudo-code produit du langage machine, tandis que le C++ sert à communiquer l’algorithme.
Le pseudo-code commande directement la mémoire, tandis que le C++ décrit les étapes sans dépendre d’une machine.
Le pseudo-code décrit l’algorithme de façon générique, tandis que le C++ peut être compilé et exécuté.

Le pseudo-code décrit l’algorithme de façon générique, tandis que le C++ peut être compilé et exécuté.

Explication

Le pseudo-code sert à raisonner et à communiquer un algorithme sans dépendre d’une machine ou d’un langage particulier, tandis qu’un programme C++ est destiné à être compilé et exécuté. Attribuer au pseudo-code une exécution directe confond description algorithmique et implémentation.

11. Quels éléments figurent dans le canevas général d’un pseudo-code ?

Une déclaration des erreurs, un fichier exécutable, des commentaires et une boucle entre Initialisation et Arrêt.
Une unité centrale, des ports d’entrée/sortie, des variables et un programme principal entre Lecture et Écriture.
Une idée générale, les déclarations des fonctions et variables, puis un programme principal entre Début et Fin.
Une liste de périphériques, un compilateur, une mémoire et un programme principal entre Entrée et Sortie.

Une idée générale, les déclarations des fonctions et variables, puis un programme principal entre Début et Fin.

Explication

Le canevas général comprend une idée générale, la déclaration des fonctions, la déclaration des variables et un programme principal délimité par Début et Fin. Les composants matériels et le fichier exécutable ne font pas partie de cette structure de pseudo-code.

12. Quelle fonction principale un IDE fournit-il dans le développement d’un programme C++ ?

Il transforme automatiquement tout programme en pseudo-code détaillé
Il regroupe l’édition, la compilation et le débogage du programme
Il exécute le programme sans vérifier les erreurs de compilation
Il remplace le langage C++ par un langage graphique spécialisé

Il regroupe l’édition, la compilation et le débogage du programme

Explication

Un IDE rassemble les outils nécessaires pour éditer le code, le compiler et le déboguer. Il ne dispense pas de vérifier la compilation et ne remplace pas le langage utilisé.

13. Quel élément doit contenir le fichier source main.cpp dans un programme C++ ?

Le programme principal avec les inclusions, main(), les variables, les instructions et return 0
Le journal de compilation contenant les avertissements et les erreurs du programme
Une bibliothèque de fonctions graphiques appelée automatiquement par le compilateur
La définition d’un projet sans fonction principale ni instruction exécutable

Le programme principal avec les inclusions, main(), les variables, les instructions et return 0

Explication

Le fichier main.cpp contient le programme principal et ses éléments essentiels, notamment la fonction int main() et return 0. Il ne correspond pas au journal de compilation, et main.cpp désigne un fichier alors que main() désigne une fonction.

14. Quelle structure constitue le minimum obligatoire d’un programme C++ exécutable ?

int main() { ... }
void debut() { ... }
programme() [ ... ]
start: { ... }

int main() { ... }

Explication

Un programme C++ doit comporter la fonction int main(), et son code effectif se place entre ses accolades. Les autres formes proposées ne constituent pas la structure minimale exigée.

15. Quelle séquence permet correctement d’exécuter un programme C++ ?

Exécuter, modifier le Build log, puis compiler le programme
Déboguer, supprimer les avertissements, puis écrire les inclusions
Compiler, vérifier le Build log, puis exécuter le programme
Créer l’affichage, lancer le programme, puis corriger les erreurs éventuelles

Compiler, vérifier le Build log, puis exécuter le programme

Explication

Il faut d’abord compiler, contrôler l’absence d’erreurs et d’avertissements dans le Build log, puis lancer l’exécution. Exécuter avant la compilation ne permet pas de valider correctement le programme.

16. Qu’est-ce qu’une variable dans un programme C++ ?

Un symbole réservé à l’affichage d’un message à l’écran
Une instruction qui compare deux valeurs sans les mémoriser
Une valeur fixe qui ne doit pas changer pendant l’exécution
Une case mémoire qui stocke une donnée pouvant être modifiée

Une case mémoire qui stocke une donnée pouvant être modifiée

Explication

Une variable est une zone de mémoire réservée au stockage d’une donnée, dont la valeur peut être modifiée. Une valeur fixe correspond plutôt à une constante, tandis qu’une comparaison relève des opérateurs.

17. Quel type C++ convient pour stocker un nombre décimal ?

int
bool
char
float

float

Explication

Le type float représente un nombre décimal. Le type int sert aux entiers, char aux caractères ASCII et bool aux valeurs vraies ou fausses.

18. Quelles instructions sont utilisées respectivement pour saisir et afficher une valeur en C++ ?

cin pour la saisie et cout pour l’affichage
cout pour la saisie et cin pour l’affichage
input pour la saisie et output pour l’affichage
scanf pour la saisie et printf pour l’affichage

cin pour la saisie et cout pour l’affichage

Explication

En C++, cin reçoit une valeur saisie et cout l’envoie vers l’affichage, avec des chevrons orientés selon l’opération. Inverser ces rôles conduirait à utiliser les flux de manière incorrecte.

19. Quel opérateur C++ calcule le reste d’une division entière ?

/
%
*
-

%

Explication

L’opérateur % calcule le reste d’une division entière. L’opérateur / réalise la division, tandis que * et - correspondent respectivement à la multiplication et à la soustraction.

20. À quoi sert une structure conditionnelle ?

À exécuter des instructions différentes selon qu’un test est vrai ou faux
À convertir automatiquement un nombre entier en nombre décimal
À réserver une case mémoire pour stocker une donnée du programme
À répéter un bloc jusqu’à ce qu’une variable atteigne une valeur donnée

À exécuter des instructions différentes selon qu’un test est vrai ou faux

Explication

Une structure conditionnelle choisit les instructions à exécuter en fonction du résultat d’un test. La répétition relève d’une structure itérative, tandis que les autres propositions concernent le stockage ou la conversion des données.

21. Que fait une structure if...else lorsque son test est faux ?

Elle réévalue le même test dans le bloc else avant d’agir
Elle ignore le bloc else et poursuit toujours le bloc if
Elle exécute simultanément les blocs if et else
Elle exécute le bloc else, qui représente le cas complémentaire

Elle exécute le bloc else, qui représente le cas complémentaire

Explication

Le bloc if est exécuté lorsque le test est vrai, et le bloc else traite le cas contraire sans effectuer un nouveau test. Le bloc else n’est donc pas une seconde condition indépendante.

22. Quelle écriture teste l’égalité entre deux valeurs en C++ ?

<=
==
=
!=

==

Explication

L’opérateur == compare deux valeurs pour déterminer si elles sont égales. Le symbole = réalise une affectation, tandis que != teste la différence et <= compare l’infériorité ou l’égalité.

23. Comment une structure if...else if...else traite-t-elle plusieurs possibilités ?

Elle répète le premier test jusqu’à ce qu’il devienne faux
Elle exécute chaque bloc correspondant à un test vrai, sans sélection
Elle enchaîne des tests exclusifs, puis else traite le cas restant
Elle remplace les tests par une affectation de valeurs successives

Elle enchaîne des tests exclusifs, puis else traite le cas restant

Explication

Cette structure examine plusieurs tests différents et exclusifs, puis la clause else prend en charge le cas qui reste. Elle ne déclenche donc pas tous les blocs vrais et ne constitue pas une boucle.

24. Dans quel cas une boucle `while` peut-elle ne s’exécuter aucune fois ?

Lorsque le programme poursuit son exécution après le bloc
Lorsque son bloc contient une accolade fermante
Lorsque sa variable de contrôle est initialisée avant elle
Lorsque son test est faux dès la première évaluation

Lorsque son test est faux dès la première évaluation

Explication

Une boucle `while` vérifie sa condition avant d’exécuter le bloc, si bien qu’un test initialement faux entraîne zéro itération. La boucle `do...while`, contrairement à elle, exécute d’abord son bloc puis évalue sa condition.

25. Quel ensemble d’éléments permet à une boucle `while` de fonctionner correctement et de progresser vers son arrêt ?

Une accolade ouvrante, un point-virgule et une instruction d’affectation
Une déclaration de fonction, un prototype et une valeur de retour
Une condition de sortie, une bibliothèque importée et une variable locale
Une initialisation, une condition de maintien et une modification de la variable testée

Une initialisation, une condition de maintien et une modification de la variable testée

Explication

La boucle nécessite une variable initialisée, une condition qui la maintient active et une modification effectuée dans le bloc. Une condition de maintien ne provoque pas directement la sortie : elle garde la boucle active tant qu’elle reste vraie.

26. À quel moment la condition d’une boucle `do...while` est-elle évaluée ?

Après la fin complète du programme appelant
Après l’exécution des instructions du bloc
Pendant l’initialisation de la variable testée
Avant toute exécution des instructions du bloc

Après l’exécution des instructions du bloc

Explication

La boucle `do...while` exécute d’abord les instructions placées dans son bloc, puis évalue la condition située après l’accolade fermante. Elle se distingue ainsi de `while`, qui teste la condition avant le bloc.

27. Quel est le rôle principal d’une fonction dans un programme ?

Importer automatiquement les bibliothèques nécessaires à chaque fichier source
Répéter une instruction sans condition jusqu’à la fin de l’exécution
Regrouper des instructions appelables afin de mieux organiser et lire le code
Remplacer toutes les variables par des constantes globales dans le programme

Regrouper des instructions appelables afin de mieux organiser et lire le code

Explication

Une fonction regroupe un bloc d’instructions que le programme peut appeler selon ses besoins, ce qui compartimente le code et améliore sa gestion. L’importation des bibliothèques relève des directives `#include`, tandis que la répétition conditionnelle relève des boucles.

28. Quelle directive permet d’importer la bibliothèque contenant la fonction `rand()` ?

`#include <time.h>`
`#include <stdlib.h>`
`#include <fonction.h>`
`#include <stdio.h>`

`#include <stdlib.h>`

Explication

La fonction `rand()` appartient à la bibliothèque `stdlib.h`, qui est importée avec `#include <stdlib.h>`. Les autres en-têtes proposés peuvent servir à d’autres fonctionnalités, mais ils ne correspondent pas à l’appartenance indiquée pour `rand()`.

29. Quelle expression génère un entier aléatoire compris entre `input_min` et `input_max`, bornes incluses ?

`rand() % (input_max - input_min) - input_min`
`rand() * (input_max - input_min + 1) + input_max`
`rand() % (input_max - input_min + 1) + input_min`
`rand() / (input_max + input_min) + input_min`

`rand() % (input_max - input_min + 1) + input_min`

Explication

Le reste de la division par `input_max - input_min + 1` limite la valeur produite, puis l’ajout de `input_min` décale l’intervalle vers sa borne minimale. `rand()` produit d’abord un entier pseudo-aléatoire ; l’opérateur `%` sert ensuite à le ramener dans l’intervalle voulu.

30. Quelle affirmation distingue correctement les fonctions `int` et `void` ?

Une fonction `int` appartient à une bibliothèque, tandis qu’une fonction `void` est toujours locale
Une fonction `int` renvoie une valeur entière, tandis qu’une fonction `void` ne renvoie pas de valeur
Une fonction `int` contient une boucle, tandis qu’une fonction `void` contient une condition
Une fonction `int` reçoit un entier, tandis qu’une fonction `void` reçoit une valeur logique

Une fonction `int` renvoie une valeur entière, tandis qu’une fonction `void` ne renvoie pas de valeur

Explication

Le type de sortie `int` indique qu’une valeur entière est renvoyée, alors que `void` indique l’absence de valeur retournée. Ces types décrivent le résultat de la fonction et ne déterminent ni son contenu ni son origine.

31. Quelle différence caractérise la déclaration et la définition d’une fonction ?

La déclaration fournit le prototype avec un point-virgule, tandis que la définition contient le code entre accolades
La déclaration renvoie une valeur, tandis que la définition reçoit les paramètres de l’appel
La déclaration exécute la fonction, tandis que la définition importe la bibliothèque correspondante
La déclaration contient les instructions entre accolades, tandis que la définition fournit le prototype avec un point-virgule

La déclaration fournit le prototype avec un point-virgule, tandis que la définition contient le code entre accolades

Explication

La déclaration annonce la fonction à l’aide de son prototype et se termine par un point-virgule. La définition contient les instructions exécutables entre accolades et ne demande pas de point-virgule après son en-tête.

32. Que se passe-t-il lors d’un appel de fonction utilisant des paramètres transmis par valeur ?

Les variables de l’appelant sont remplacées directement avant l’exécution des instructions
Le prototype est recréé après l’appel avant l’exécution des instructions
Les valeurs sont copiées dans des variables locales, puis une valeur prévue peut être retournée
Les paramètres sont ignorés et la fonction utilise uniquement ses variables globales

Les valeurs sont copiées dans des variables locales, puis une valeur prévue peut être retournée

Explication

Les valeurs fournies sont copiées dans des variables locales de la fonction, sur lesquelles les instructions travaillent avant un éventuel retour. Les variables de l’appelant ne sont donc pas remplacées directement par ces copies locales.

33. Quelle organisation de fichiers permet de construire une bibliothèque de fonctions importée dans un programme principal ?

Un fichier fonctions.h contenant les définitions, sans fichier source ni inclusion dans main.cpp
Un fichier fonctions.h pour les prototypes, fonctions.cpp pour les définitions et un include dans main.cpp
Un seul fichier main.cpp contenant les prototypes, les définitions et les appels de fonctions
Un fichier fonctions.cpp pour les prototypes, fonctions.h pour les définitions et un include dans main.cpp

Un fichier fonctions.h pour les prototypes, fonctions.cpp pour les définitions et un include dans main.cpp

Explication

La bibliothèque repose sur les prototypes dans fonctions.h, les définitions dans fonctions.cpp, puis l’inclusion de l’en-tête dans main.cpp. Inverser les rôles de l’en-tête et du fichier source ne respecte pas cette organisation.

34. Quelle instruction représente correctement l’appel d’une fonction dont la valeur de sortie doit être récupérée dans var_sortie ?

var_sortie(NomFonction) = val_1 + val_2;
NomFonction(var_sortie) = val_1, val_2;
var_sortie = NomFonction(val_1, val_2);
NomFonction = var_sortie(val_1, val_2);

var_sortie = NomFonction(val_1, val_2);

Explication

Un appel fournit les valeurs d’entrée entre parenthèses et l’affectation récupère la valeur renvoyée dans une variable de sortie. La forme où le nom de la fonction reçoit directement une affectation inverse donc ces deux rôles.

35. Que se passe-t-il pendant l’exécution d’un appel de fonction avec passage des valeurs par copie ?

Les arguments sont conservés dans la fonction, qui modifie directement les variables originales avant de terminer
Les valeurs sont copiées dans des paramètres locaux, puis la valeur retournée peut être récupérée par l’appelant
Les variables originales sont déplacées dans la fonction, puis les paramètres locaux restent accessibles après son retour
Les paramètres locaux sont créés après le retour, puis leur contenu est transmis au programme appelant

Les valeurs sont copiées dans des paramètres locaux, puis la valeur retournée peut être récupérée par l’appelant

Explication

Les valeurs transmises deviennent des paramètres locaux, utilisés par les instructions, puis la fonction renvoie une valeur récupérable par l’appelant. Les paramètres locaux cessent ensuite d’être accessibles, contrairement à l’affirmation qu’ils resteraient disponibles.

36. Une fonction reçoit une variable entière par copie et modifie son paramètre local : quel est l’effet sur la variable du programme principal ?

La variable originale prend la nouvelle valeur, car toute modification locale est propagée
La variable originale est supprimée, car la copie remplace son emplacement mémoire
La variable originale devient constante, car le paramètre local a été modifié
La variable originale conserve sa valeur, car le paramètre modifié est une copie locale

La variable originale conserve sa valeur, car le paramètre modifié est une copie locale

Explication

Le passage par copie crée un paramètre local distinct de la variable originale, même si ce paramètre peut être modifié. La modification locale n’est donc pas propagée au programme principal.

37. Quel résultat produit une fonction déclarée avec le type de retour void ?

Elle renvoie une copie de chacun de ses paramètres
Elle ne renvoie aucune valeur au programme appelant
Elle renvoie une valeur entière initialisée à zéro
Elle renvoie automatiquement la dernière valeur calculée

Elle ne renvoie aucune valeur au programme appelant

Explication

Le type void indique que la fonction ne fournit aucune valeur de retour au programme appelant. Une valeur entière nulle ou la dernière valeur calculée correspondrait à un autre comportement de retour.

38. Quelle description correspond à un tableau statique ?

Une réservation contiguë de plusieurs cases de même type et de taille fixée
Une variable unique pouvant contenir plusieurs types selon les affectations
Un ensemble de fonctions partageant une même zone de mémoire temporaire
Une suite de cases dispersées dont le nombre varie à chaque lecture

Une réservation contiguë de plusieurs cases de même type et de taille fixée

Explication

Un tableau statique réserve plusieurs cases contiguës, de taille déterminée, et ces cases contiennent des valeurs d’un même type. Une variable simple ne fournit pas cette collection de cases, et un tableau statique n’est pas redimensionné à chaque lecture.

39. Pour un tableau déclaré avec une taille taille, quels sont ses indices valides et comment désigne-t-on sa case i ?

Les indices vont de 1 à taille − 1, et la case i s’écrit tab{i}
Les indices vont de 0 à taille, et la case i s’écrit tab(i)
Les indices vont de 1 à taille, et la case i s’écrit tab(i)
Les indices vont de 0 à taille − 1, et la case i s’écrit tab[i]

Les indices vont de 0 à taille − 1, et la case i s’écrit tab[i]

Explication

Le premier indice d’un tableau est 0, le dernier est taille − 1, et l’accès à une case utilise des crochets, comme dans tab[i]. La notation avec parenthèses ou accolades ne correspond pas à cette règle d’indexation.

40. Laquelle de ces situations correspond à une déclaration valide de tableau statique ?

Modifier la taille du tableau après sa déclaration selon le nombre de valeurs saisies
Utiliser une variable quelconque comme taille et changer cette valeur pendant l’exécution
Déclarer une taille avec une constante unsigned int ou initialiser le tableau avec une liste de valeurs
Déclarer un tableau sans taille ni initialisation, puis laisser le programme la déterminer

Déclarer une taille avec une constante unsigned int ou initialiser le tableau avec une liste de valeurs

Explication

Un tableau statique peut utiliser une taille explicite, une constante unsigned int, une liste d’initialisation immédiate ou const avec initialisation obligatoire. Modifier dynamiquement sa taille ou laisser une déclaration totalement indéterminée ne respecte pas ces formes.

41. Dans l’approximation de la racine carrée, quelle relation permet de calculer suite[i] après l’initialisation de suite[0] à 1.0 ?

suite[i]=suite[i−1]+asuite[i−1]2suite[i] = \frac{suite[i-1] + \frac{a}{suite[i-1]}}{2} pour i de 1 à TAILLE − 1
suite[i]=suite[i−1]−asuite[i−1]2suite[i] = \frac{suite[i-1] - \frac{a}{suite[i-1]}}{2} pour i de 0 à TAILLE − 1
suite[i]=suite[i−1]+a×suite[i−1]2suite[i] = \frac{suite[i-1] + a \times suite[i-1]}{2} pour i de 1 à TAILLE
suite[i]=suite[i−1]+2asuite[i−1]suite[i] = suite[i-1] + \frac{2a}{suite[i-1]} pour i de 1 à TAILLE − 1

$$suite[i] = \frac{suite[i-1] + \frac{a}{suite[i-1]}}{2}$$ pour i de 1 à TAILLE − 1

Explication

La suite commence par suite[0]=1.0suite[0] = 1.0, puis chaque terme est la moyenne de suite[i−1]suite[i-1] et de a/suite[i−1]a/suite[i-1], pour i allant de 1 à TAILLE − 1. Les autres relations changent soit l’opération avec a, soit les bornes de calcul, soit le signe de la correction.

42. En C++, quelle structure représente une chaîne de caractères de type C ?

Un tableau de caractères terminé par le caractère caché « »
Un pointeur vers un tableau sans caractère de terminaison
Un tableau d’entiers terminé par une valeur négative
Une suite de caractères stockée dans une variable numérique

Un tableau de caractères terminé par le caractère caché « »

Explication

Une chaîne de caractères de type C est un tableau de caractères dont la fin est signalée par le caractère « ». Un pointeur peut désigner une telle chaîne, mais il ne constitue pas à lui seul la définition de sa structure.

43. Quel tableau faut-il déclarer pour stocker une chaîne composée de 8 caractères effectifs en C++ ?

Un tableau de 10 caractères
Un tableau de 9 caractères
Un tableau de 8 caractères
Un tableau de 7 caractères

Un tableau de 9 caractères

Explication

Il faut 8 cases pour les caractères effectifs et une case supplémentaire pour le caractère final « », soit un tableau de 9 caractères. Confondre la taille du texte avec celle du tableau conduit à réserver une case de moins.

44. Quelle affirmation distingue correctement les deux formes d’initialisation d’un tableau de caractères en C++ ?

Les doubles guillemets ajoutent implicitement « », tandis que les caractères écrits séparément exigent son ajout explicite.
Les caractères écrits séparément ajoutent automatiquement « », tandis que les doubles guillemets exigent son ajout explicite.
Les deux formes exigent l’écriture explicite de « » dans le tableau.
Les deux formes ajoutent automatiquement « » à la fin du tableau.

Les doubles guillemets ajoutent implicitement « », tandis que les caractères écrits séparément exigent son ajout explicite.

Explication

Une chaîne écrite entre doubles guillemets reçoit automatiquement son caractère terminal, alors qu’une initialisation caractère par caractère nécessite de l’écrire. La forme d’initialisation modifie donc la manière dont la terminaison est fournie.

45. Après avoir déclaré un tableau de caractères, quelle méthode permet de lui copier une nouvelle chaîne ?

Utiliser strcpy de la bibliothèque string.h
Affecter directement la chaîne avec l’opérateur =
Utiliser une conversion implicite vers un tableau
Ajouter les caractères avec l’opérateur +=

Utiliser strcpy de la bibliothèque string.h

Explication

Un tableau de caractères déjà déclaré ne peut pas recevoir directement une nouvelle chaîne par affectation avec « = » ; la fonction strcpy de string.h est prévue pour effectuer cette copie. L’opérateur d’affectation ne réassigne pas le contenu d’un tableau existant.

Révisez avec les flashcards

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

Qu'est-ce que la programmation informatique ?

La discipline permettant à un humain de communiquer des instructions codifiées à une machine.

Que doit savoir faire l’étudiant à la fin du module ?

Connaître les outils C/C++, coder, respecter bonnes pratiques, tester et déboguer.

Combien de séances de cours magistraux comprend le module ?

Le module comprend 7 séances de cours magistraux.

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