Langage C/C++

Tableaux en Langage C : Exercices Corrigés

Voici une série d’exercices corrigés sur les tableaux en langage C, allant des bases aux concepts plus avancés. Ces exercices vous aideront à mieux comprendre la manipulation des tableaux et les opérations associées.

Exercice 1 : Remplir un tableau et afficher ses éléments

Énoncé :

Écrivez un programme en C qui remplit un tableau de 5 entiers donnés par l’utilisateur et affiche ensuite les éléments du tableau.

Correction :

#include <stdio.h>

int main() {
    int tableau[5];

    // Saisie des éléments du tableau
    for(int i = 0; i < 5; i++) {
        printf("Entrez l'élément %d : ", i + 1);
        scanf("%d", &tableau[i]);
    }

    // Affichage des éléments du tableau
    printf("Les éléments du tableau sont :\n");
    for(int i = 0; i < 5; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    return 0;
}

Explication :

  • Le tableau tableau[5] est utilisé pour stocker 5 entiers.
  • Une boucle for remplit le tableau avec les entrées de l’utilisateur.
  • Une deuxième boucle for affiche les éléments du tableau.

Exercice 2 : Trouver la valeur maximale d’un tableau

Énoncé :

Écrivez un programme en C qui demande à l’utilisateur de remplir un tableau de 10 entiers, puis trouve et affiche la valeur maximale dans ce tableau.

Correction :

#include <stdio.h>

int main() {
    int tableau[10];
    int max;

    // Saisie des éléments du tableau
    for (int i = 0; i < 10; i++) {
        printf("Entrez l'élément %d : ", i + 1);
        scanf("%d", &tableau[i]);
    }

    // Initialisation de la variable max avec le premier élément du tableau
    max = tableau[0];

    // Recherche du maximum
    for (int i = 1; i < 10; i++) {
        if (tableau[i] > max) {
            max = tableau[i];
        }
    }

    // Affichage du maximum
    printf("La valeur maximale est : %d\n", max);

    return 0;
}

Explication :

  • Le programme initialise la variable max avec le premier élément du tableau.
  • Ensuite, une boucle parcourt les autres éléments du tableau pour trouver le plus grand élément.

Exercice 3 : Calcul de la moyenne d’un tableau

Énoncé :

Écrivez un programme en C qui lit 5 nombres flottants, les stocke dans un tableau, et affiche ensuite la moyenne de ces nombres.

Correction :

#include <stdio.h>

int main() {
    float tableau[5], somme = 0.0, moyenne;

    // Saisie des éléments du tableau
    for(int i = 0; i < 5; i++) {
        printf("Entrez l'élément %d : ", i + 1);
        scanf("%f", &tableau[i]);
        somme += tableau[i];  // Ajouter chaque élément à la somme
    }

    // Calcul de la moyenne
    moyenne = somme / 5;

    // Affichage de la moyenne
    printf("La moyenne des éléments est : %.2f\n", moyenne);

    return 0;
}

Explication :

  • Le tableau tableau[5] contient des nombres flottants.
  • À chaque itération, les éléments sont ajoutés à la somme, et à la fin, la moyenne est calculée en divisant la somme par 5.

Exercice 4 : Inverser les éléments d’un tableau

Énoncé :

Écrivez un programme en C qui lit 6 entiers, les stocke dans un tableau, puis affiche les éléments dans l’ordre inverse.

Correction :

#include <stdio.h>

int main() {
    int tableau[6];

    // Saisie des éléments du tableau
    for(int i = 0; i < 6; i++) {
        printf("Entrez l'élément %d : ", i + 1);
        scanf("%d", &tableau[i]);
    }

    // Affichage des éléments dans l'ordre inverse
    printf("Les éléments du tableau dans l'ordre inverse sont :\n");
    for(int i = 5; i >= 0; i--) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    return 0;
}

Explication :

  • Le programme lit 6 entiers dans un tableau.
  • Ensuite, une boucle for inverse les éléments en commençant par le dernier et en affichant chaque élément.

Exercice 5 : Tri d’un tableau (Tri par sélection)

Énoncé :

Écrivez un programme en C qui lit 5 entiers, les stocke dans un tableau, puis les trie dans l’ordre croissant en utilisant l’algorithme du tri par sélection.

Correction :

#include <stdio.h>

int main() {
    int tableau[5], i, j, min, temp;

    // Saisie des éléments du tableau
    for(i = 0; i < 5; i++) {
        printf("Entrez l'élément %d : ", i + 1);
        scanf("%d", &tableau[i]);
    }

    // Tri par sélection
    for(i = 0; i < 4; i++) {
        min = i;
        for(j = i + 1; j < 5; j++) {
            if(tableau[j] < tableau[min]) {
                min = j;
            }
        }
        // Échange des éléments
        temp = tableau[min];
        tableau[min] = tableau[i];
        tableau[i] = temp;
    }

    // Affichage du tableau trié
    printf("Le tableau trié est :\n");
    for(i = 0; i < 5; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    return 0;
}

Explication :

  • Le programme utilise l’algorithme du tri par sélection pour trier un tableau de 5 entiers.
  • À chaque itération, il trouve l’élément minimum dans la partie non triée du tableau et le place à la position correcte en l’échangeant avec l’élément actuel.

Exercice 6 : Fusionner deux tableaux

Énoncé :

Écrivez un programme en C qui lit deux tableaux de 5 entiers chacun, puis les fusionne dans un troisième tableau.

Correction :

#include <stdio.h>

int main() {
    int tableau1[5], tableau2[5], tableau_fusion[10];

    // Saisie des éléments du premier tableau
    printf("Entrez les éléments du premier tableau :\n");
    for(int i = 0; i < 5; i++) {
        scanf("%d", &tableau1[i]);
    }

    // Saisie des éléments du deuxième tableau
    printf("Entrez les éléments du deuxième tableau :\n");
    for(int i = 0; i < 5; i++) {
        scanf("%d", &tableau2[i]);
    }

    // Fusion des deux tableaux
    for(int i = 0; i < 5; i++) {
        tableau_fusion[i] = tableau1[i];
        tableau_fusion[i + 5] = tableau2[i];
    }

    // Affichage du tableau fusionné
    printf("Le tableau fusionné est :\n");
    for(int i = 0; i < 10; i++) {
        printf("%d ", tableau_fusion[i]);
    }
    printf("\n");

    return 0;
}

Explication :

  • Le programme fusionne les éléments des deux tableaux de 5 entiers dans un troisième tableau de 10 entiers.
  • Le premier tableau est copié dans la première moitié du tableau fusionné, et le deuxième tableau est copié dans la deuxième moitié.

Ces exercices tableaux en langage C vous permettent de pratiquer les bases et des concepts légèrement plus avancés liés aux tableaux en C. Vous pouvez essayer d’autres variantes, comme implémenter des algorithmes de tri plus complexes ou travailler sur des tableaux dynamiques.

Fiche de Rappel : Les Tableaux en Langage C

Les tableaux en C sont des structures de données qui permettent de stocker plusieurs éléments du même type dans un bloc de mémoire contigu. Ils sont particulièrement utiles lorsque vous devez manipuler une collection d’éléments, comme des nombres ou des chaînes de caractères.


1. Déclaration d’un tableau en C

Pour déclarer un tableau, il suffit de spécifier le type des éléments, le nom du tableau, et le nombre d’éléments à stocker dans ce tableau.

Syntaxe :

type nom_du_tableau[taille];

Exemple :

int tableau_entiers[10];  // Tableau de 10 entiers
float tableau_flottants[5];  // Tableau de 5 nombres flottants
char tableau_caracteres[20];  // Tableau de 20 caractères
  • Indice : Les tableaux en C sont indexés à partir de 0. Le premier élément d’un tableau se trouve à l’indice 0, le deuxième à l’indice 1, et ainsi de suite.

2. Initialisation d’un tableau

Un tableau peut être initialisé au moment de sa déclaration en spécifiant les valeurs à l’intérieur d’accolades {}.

Exemple d’initialisation :

int tableau[5] = {1, 2, 3, 4, 5};  // Tableau initialisé avec 5 valeurs

Si vous ne spécifiez pas le nombre d’éléments, le compilateur allouera automatiquement l’espace nécessaire pour toutes les valeurs spécifiées.

int tableau[] = {1, 2, 3, 4, 5};  // Taille déduite automatiquement

3. Accès aux éléments du tableau

L’accès aux éléments d’un tableau se fait en utilisant son indice.

Exemple :

int tableau[5] = {10, 20, 30, 40, 50};
printf("%d\n", tableau[0]);  // Affiche 10
printf("%d\n", tableau[4]);  // Affiche 50
  • Modification d’un élément :
tableau[2] = 100;  // Change la valeur à l'indice 2 en 100

4. Parcours d’un tableau

Pour parcourir un tableau, on utilise généralement une boucle for ou while.

Exemple avec for :

int tableau[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
    printf("%d ", tableau[i]);  // Affiche les éléments du tableau
}

5. Tableaux multidimensionnels

En C, vous pouvez déclarer des tableaux à plusieurs dimensions (comme les matrices). Un tableau à 2 dimensions est similaire à une matrice, où les éléments sont organisés en lignes et en colonnes.

Déclaration :

type nom_du_tableau[taille1][taille2];

Exemple de tableau 2D (matrice) :

int matrice[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

Accès à un élément d’une matrice :

printf("%d\n", matrice[0][1]);  // Affiche 2

6. Tableaux de chaînes de caractères

Un tableau de caractères (ou chaîne de caractères) est un tableau d’éléments de type char.

Exemple :

char nom[10] = "Alice";  // Chaîne de caractères

Dans ce cas, le tableau contient les caractères 'A', 'l', 'i', 'c', 'e' suivis d’un caractère nul (\0), qui marque la fin de la chaîne.

Tableau de chaînes :

Vous pouvez créer un tableau de chaînes de caractères pour stocker plusieurs mots ou phrases.

char noms[3][10] = {"Alice", "Bob", "Charlie"};

7. Passage de tableau en paramètre

En C, lorsqu’un tableau est passé à une fonction, c’est l’adresse de son premier élément qui est transmise (par référence).

Exemple :

void afficher_tableau(int tableau[], int taille) {
    for (int i = 0; i < taille; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");
}

int main() {
    int tableau[5] = {1, 2, 3, 4, 5};
    afficher_tableau(tableau, 5);  // Passe le tableau à la fonction
    return 0;
}

8. Mémoire et tableaux

Les tableaux en C occupent de la mémoire contiguë, c’est-à-dire que les éléments sont stockés les uns à la suite des autres.

Taille d’un tableau :

Vous pouvez utiliser l’opérateur sizeof pour obtenir la taille en octets d’un tableau, ou la taille d’un élément.

Exemple :

int tableau[5];
printf("Taille du tableau : %lu octets\n", sizeof(tableau));  // Taille totale en octets
printf("Taille d'un élément : %lu octets\n", sizeof(tableau[0]));  // Taille d'un élément

Pour obtenir le nombre d’éléments :

int taille = sizeof(tableau) / sizeof(tableau[0]);

9. Erreurs fréquentes avec les tableaux

  • Débordement de tableau : Accéder à un indice qui dépasse la taille du tableau peut entraîner des comportements indéfinis.
  • Par exemple, essayer d’accéder à tableau[5] alors que le tableau a été déclaré avec 5 éléments (tableau[0] à tableau[4]).
  • Non-initialisation des tableaux : Si un tableau n’est pas initialisé explicitement, les éléments peuvent contenir des valeurs indéfinies.

Résumé des principales commandes :

CommandeDescription
type nom[taille];Déclare un tableau de taille fixe.
nom[indice] = valeur;Modifie la valeur d’un élément du tableau.
int nom[][] = {{...},{...}}Déclare un tableau multidimensionnel.
sizeof(tableau)Renvoie la taille totale en octets d’un tableau.
nom[indice]Accède à l’élément à l’indice spécifié dans le tableau.

En résumé, les tableaux en C sont un moyen efficace de manipuler des collections d’éléments du même type, que ce soit en 1D (tableau simple) ou en 2D (tableau multidimensionnel). Leur gestion requiert de la prudence en ce qui concerne la gestion des indices et la mémoire allouée.

Autres articles

Guide : Comment créer un QCM en...
Le QCM en langage C peut être simulé dans un...
Read more
Comment fonctionne la récursion terminale en C...
La récursion terminale en CLa récursion terminale est une forme...
Read more
Comment éviter une boucle infinie ?
Une boucle infinie survient lorsque la condition de terminaison d’une...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *