Test & QCM Métier

QCM sur les Tableaux en Langage C

×

Recommandés

QCM Corrigé : Planification et Ordonnancement de...
Question 1 : Quel est l’objectif principal...
En savoir plus
QCM : Exemples de Textes Narratifs
Voici une série de QCM basés...
En savoir plus
Guide : GRAFCET et Compteur - Exercices...
Le GRAFCET (Graphe Fonctionnel de Commande...
En savoir plus
QCM : Maintenance Informatique en 2024
Voici un exemple de QCM (Questionnaire...
En savoir plus
Réussir un QCM Histoire du Jeu Vidéo...
L’histoire du jeu vidéo est un...
En savoir plus
QCM Culture Professionnelle en Marketing
La culture professionnelle en marketing est...
En savoir plus

Les tableaux en langage C sont une structure de données fondamentale permettant de stocker une collection d’éléments de même type. Comprendre et manipuler les tableaux est essentiel pour tout programmeur en C. Cet article propose un QCM détaillé sur les tableaux en C, accompagné d’explications et de corrigés pour chaque question.

QCM

Question 1 : Déclaration et initialisation des tableaux

Quelle est la syntaxe correcte pour déclarer et initialiser un tableau de 5 entiers en C ?

A. int arr[5] = {1, 2, 3, 4, 5};
B. int arr = {1, 2, 3, 4, 5};
C. int arr[5] = (1, 2, 3, 4, 5);
D. int arr[5]; arr = {1, 2, 3, 4, 5};

Réponse : A

Explication : La syntaxe correcte pour déclarer et initialiser un tableau de 5 entiers en C est int arr[5] = {1, 2, 3, 4, 5};. Les autres options sont incorrectes car elles utilisent une syntaxe non valide.

Question 2 : Accès aux éléments du tableau

Comment accéder au troisième élément d’un tableau arr en C ?

A. arr[2]
B. arr[3]
C. arr[4]
D. arr(3)

Réponse : A

Explication : En C, les indices des tableaux commencent à 0. Ainsi, le troisième élément du tableau arr est accessible via arr[2].

Question 3 : Taille des tableaux

Quelle est la taille en mémoire d’un tableau int arr[10] si un entier occupe 4 octets ?

A. 10 octets
B. 20 octets
C. 30 octets
D. 40 octets

Réponse : D

Explication : La taille totale en mémoire d’un tableau est égale au nombre d’éléments multiplié par la taille de chaque élément. Ici, 10 * 4 = 40 octets.

Question 4 : Boucles et tableaux

Quel est le résultat de ce programme en C ?

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int sum = 0;
    for(int i = 0; i < 5; i++) {
        sum += arr[i];
    }
    printf("%d\n", sum);
    return 0;
}

A. 10
B. 11
C. 12
D. 15

Réponse : D

Explication : Le programme additionne tous les éléments du tableau arr. La somme est 1 + 2 + 3 + 4 + 5 = 15.

Question 5 : Tableaux multidimensionnels

Comment déclare-t-on un tableau bidimensionnel de 3 lignes et 4 colonnes en C ?

A. int arr[3, 4];
B. int arr[3][4];
C. int arr[4][3];
D. int arr[12];

Réponse : B

Explication : La déclaration correcte d’un tableau bidimensionnel en C est int arr[3][4];, où 3 représente le nombre de lignes et 4 le nombre de colonnes.

Question 6 : Passage de tableaux aux fonctions

Quelle est la manière correcte de passer un tableau à une fonction en C ?

A. void func(int arr);
B. void func(int *arr);
C. void func(int arr[]);
D. B et C

Réponse : D

Explication : En C, un tableau peut être passé à une fonction en utilisant un pointeur ou en utilisant la syntaxe d’un tableau. Les deux déclarations void func(int *arr); et void func(int arr[]); sont correctes.

Question 7 : Index hors limites

Quel est le comportement si l’on accède à un index hors des limites du tableau en C ?

A. Le programme plante immédiatement.
B. Une erreur de compilation se produit.
C. Un comportement indéfini se produit.
D. Le programme retourne -1.

Réponse : C

Explication : Accéder à un index hors des limites d’un tableau en C entraîne un comportement indéfini. Cela peut provoquer des erreurs d’exécution, des résultats incorrects ou même ne provoquer aucun problème apparent.

Question 8 : Initialisation partielle

Que contient le tableau après cette déclaration en C : int arr[5] = {1, 2}; ?

A. {1, 2, 0, 0, 0}
B. {1, 2, 2, 2, 2}
C. {1, 2, 1, 2, 1}
D. {1, 2, garbage, garbage, garbage}

Réponse : A

Explication : Lorsqu’un tableau est partiellement initialisé en C, les éléments non initialisés sont automatiquement mis à zéro.

QCM Avancé sur les Tableaux en Langage C

Les tableaux en C offrent des possibilités avancées pour la gestion de données. Ils peuvent être utilisés dans des contextes variés et complexes, notamment en algorithmes, structures de données et gestion de mémoire. Ce QCM avancé explore des aspects plus complexes et des cas particuliers liés aux tableaux en C, avec des corrigés détaillés.

QCM

Question 1 : Tableaux dynamiques

Comment allouer dynamiquement un tableau de 10 entiers en C ?

A. int *arr = malloc(10 * sizeof(int));
B. int arr[10] = malloc(10 * sizeof(int));
C. int *arr = malloc(10);
D. int *arr = alloc(10 * sizeof(int));

Réponse : A

Explication : La fonction malloc alloue de la mémoire dynamique. La syntaxe correcte pour allouer un tableau de 10 entiers est int *arr = malloc(10 * sizeof(int));.

Question 2 : Tableaux et pointeurs

Quel est le résultat de ce programme en C ?

#include <stdio.h>

void update(int *arr, int size) {
    for(int i = 0; i < size; i++) {
        arr[i] += 10;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    update(arr, size);
    for(int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

A. 11 12 13 14 15
B. 1 2 3 4 5
C. 10 20 30 40 50
D. Compilation error

Réponse : A

Explication : La fonction update incrémente chaque élément du tableau de 10. Le résultat imprimé est donc 11 12 13 14 15.

Question 3 : Tableaux multidimensionnels et mémoire

Quel est l’avantage d’utiliser des tableaux à une dimension (linéarisés) par rapport aux tableaux multidimensionnels en termes de gestion de la mémoire en C ?

A. Meilleure lisibilité du code
B. Simplification des calculs d’index
C. Réduction de l’utilisation de la mémoire
D. Amélioration des performances de cache

Réponse : D

Explication : Les tableaux linéarisés améliorent les performances de cache car les éléments sont stockés de manière contiguë en mémoire, ce qui améliore l’accès séquentiel.

Question 4 : Tableaux de structures

Considérez la structure suivante et le code correspondant :

#include <stdio.h>

typedef struct {
    int id;
    char name[20];
} Person;

int main() {
    Person people[2] = {{1, "Alice"}, {2, "Bob"}};
    printf("%s\n", people[1].name);
    return 0;
}

Quel est le résultat de ce programme ?

A. Alice
B. Bob
C. Compilation error
D. Runtime error

Réponse : B

Explication : Le programme initialise un tableau de structures Person et imprime le nom de la deuxième personne, soit « Bob ».

Question 5 : Tableaux et fonctions variadiques

Est-il possible de passer un tableau à une fonction variadique en C ? Pourquoi ?

A. Oui, car les tableaux peuvent être traités comme des pointeurs
B. Non, car les fonctions variadiques ne supportent pas les tableaux
C. Oui, mais avec des limitations
D. Non, car le standard C l’interdit

Réponse : C

Explication : Il est possible de passer un tableau à une fonction variadique, mais le programmeur doit gérer manuellement la taille du tableau et les pointeurs, car les fonctions variadiques ne possèdent pas de mécanisme intégré pour identifier la fin d’un tableau.

Question 6 : Accès via pointeurs et tableaux

Quel est le résultat de ce programme ?

#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int *ptr = arr;
    *(ptr + 3) = 100;
    printf("%d\n", arr[3]);
    return 0;
}

A. 30
B. 40
C. 100
D. Compilation error

Réponse : C

Explication : Le pointeur ptr est initialisé pour pointer sur le tableau arr. L’instruction *(ptr + 3) = 100; modifie le quatrième élément du tableau à 100. Donc, arr[3] est maintenant 100.

Question 7 : Sous-tableaux

Comment copier un sous-tableau de taille n à partir d’un tableau src en C ?

A. Utiliser la fonction memcpy
B. Utiliser une boucle for
C. Utiliser la fonction strncpy
D. A et B

Réponse : D

Explication : Les deux méthodes sont valides. memcpy est efficace pour copier des blocs de mémoire, tandis qu’une boucle for peut être utilisée pour des copies spécifiques et potentiellement des conversions de type.

Question 8 : Tableaux et optimisation du compilateur

Quel est le rôle des directives restrict dans l’optimisation des accès aux tableaux ?

A. Indiquer au compilateur que les tableaux peuvent se chevaucher
B. Indiquer au compilateur que les tableaux ne se chevauchent pas
C. Empêcher toute optimisation
D. Permettre une allocation dynamique

Réponse : B

Explication : La directive restrict indique au compilateur que les pointeurs n’ont pas de chevauchement dans leur portée, permettant ainsi des optimisations plus agressives par le compilateur.

Conclusion

Les tableaux sont une composante essentielle de la programmation en C. Comprendre leur déclaration, leur manipulation et les pièges courants est crucial pour écrire des programmes efficaces et sans erreurs. Ce QCM couvre les aspects fondamentaux des tableaux en C et offre des explications détaillées pour chaque question, facilitant ainsi l’apprentissage et la révision des concepts clés.

Recommandés

QCM pictogrammes de sécurité GHS en ligne
{ "@context": "https://schema.org", "@graph":...
En savoir plus
Préparer un Entretien en Conseil Stratégique :...
Un entretien en contexte stratégique ne...
En savoir plus
Exercices Corrigés : Analyse des Flux de...
Exercice 1 : Calcul du Flux...
En savoir plus
QCM sur VB.NET : Questions à Choix...
Voici un QCM destiné à tester...
En savoir plus
QCM - Programmation procédurale en C
Voici un exemple de QCM portant...
En savoir plus
Guide détaillé : QCM Microéconomie pour L1
La microéconomie est une branche essentielle...
En savoir plus
AZ

Recent Posts

Classification des Documents : Organiser et Automatiser la Gestion Documentaire

Dans toute organisation moderne — entreprise, association, service administratif ou bureau de projet — la…

2 jours ago

Modèle de Bilan Actif Passif sur Excel : Concevoir un tableau comptable clair et automatisé

Dans la pratique comptable, le bilan constitue l’un des documents les plus fondamentaux pour comprendre…

2 jours ago

Fiche Méthode analyse linéaire + guide complet pour la réussir

L’analyse linéaire impressionne souvent plus qu’elle ne le devrait. Au moment d’aborder l’oral du bac…

3 jours ago

Analyse linéaire au bac français : méthode complète, exemples et conseils pour réussir l’oral

L’analyse linéaire occupe une place centrale à l’oral du bac français. C’est l’exercice qui permet…

3 jours ago

Créer une fiche de suivi en ligne : générateur personnalisable à imprimer

Créer une fiche de suivi claire et adaptée à son activité prend souvent plus de…

3 jours ago

Préparation physique football avec ballon : Fiche Word utile

Comment améliorer sa condition physique tout en travaillant la technique Quand on parle de préparation…

3 jours ago

This website uses cookies.