Tableaux à une dimension en langage C

@joekakone

Joseph Konka @joekakone

03/03/2026 · 8 min

Maîtrisez les tableaux 1D en C : déclaration, initialisation, parcours par boucles, passage à une fonction, calcul de moyenne et recherche de minimum/maximum.

Le tableau à une dimension (ou vecteur) est la structure de données la plus simple et la plus directe pour stocker une suite finie de valeurs de même nature.

Ce cours vous apprend à déclarer, initialiser, remplir, parcourir et transmettre des tableaux à des fonctions selon les règles de l'art du C.


1. Déclaration et Initialisation#

Déclaration d'un tableau#

Pour déclarer un tableau, on précise le type de ses éléments, son nom et le nombre de cases à allouer entre crochets :

#define CAPACITE 6

// Déclare un tableau de 6 entiers (valeurs initiales indéterminées)
int notes[CAPACITE];

[!TIP] Définissez toujours la taille de vos tableaux à l'aide d'une constante symbolique #define TAILLE .... Si la dimension du tableau doit changer dans le futur, vous n'aurez qu'une seule ligne à modifier au début du fichier !

Méthodes d'initialisation à la déclaration#

// 1. Initialisation complète explicite
int nombres[5] = {12, 45, 78, 23, 56};

// 2. Initialisation à zéro de TOUT le tableau (TRÈS PRATIQUE)
int compteurs[100] = {0}; // Toutes les 100 cases sont mises à 0

// 3. Initialisation partielle
int coefficients[5] = {3, 2}; // Les cases 0 et 1 valent 3 et 2, les cases 2, 3, 4 valent 0

// 4. Déduction automatique de la taille par le compilateur
char voyelles[] = {'A', 'E', 'I', 'O', 'U', 'Y'}; // Taille = 6 cases

2. Parcours complet : Saisie et Affichage#

Le moyen naturel de parcourir un tableau est la boucle for, dont l'indice de boucle i varie exactement de 0 à TAILLE - 1 :

saisie_affichage_tableau.c
#include <stdio.h>

#define NB_NOTES 5

int main(void)
{
    float notes[NB_NOTES];

    // 1. Saisie des notes
    printf("--- SAISIE DES %d NOTES ---\n", NB_NOTES);
    for (int i = 0; i < NB_NOTES; i++)
    {
        printf("Note n°%d (indice [%d]) : ", i + 1, i);
        scanf("%f", &notes[i]); // On donne l'adresse de la case i avec &notes[i]
    }

    // 2. Affichage des notes
    printf("\n--- RELEVE DES NOTES ---\n");
    for (int i = 0; i < NB_NOTES; i++)
    {
        printf("[%.2f] ", notes[i]);
    }
    printf("\n");

    return 0;
}

3. Transmettre un tableau à une fonction#

En C, lorsqu'on passe un tableau en paramètre à une fonction, le tableau ne voyage pas sous forme de copie complète : il est automatiquement converti en pointeur vers sa première case.

Par conséquent, le compilateur ne connaît pas la taille du tableau à l'intérieur de la fonction. Il est donc impératif de transmettre systématiquement la taille du tableau en second argument !

Passage d'un tableau en paramètre
#include <stdio.h>

// Le mot-clé 'const' garantit que la fonction ne modifiera pas le contenu du tableau
void AfficherTableau(const int tab[], int taille)
{
    printf("[ ");
    for (int i = 0; i < taille; i++)
    {
        printf("%d ", tab[i]);
    }
    printf("]\n");
}

4. Algorithmes fondamentaux sur les tableaux 1D#

Trois opérations reviennent continuellement en programmation :

1. Calcul de la moyenne arithmétique#

float CalculerMoyenne(const float tab[], int taille)
{
    if (taille <= 0) return 0.0f;

    float somme = 0.0f;
    for (int i = 0; i < taille; i++)
    {
        somme += tab[i];
    }
    return somme / (float)taille;
}

2. Recherche du minimum, du maximum et de leurs positions#

void TrouverExtrema(const int tab[], int taille, int *min, int *max)
{
    *min = tab[0];
    *max = tab[0];

    for (int i = 1; i < taille; i++)
    {
        if (tab[i] < *min) *min = tab[i];
        if (tab[i] > *max) *max = tab[i];
    }
}
int RechercherValeur(const int tab[], int taille, int cible)
{
    for (int i = 0; i < taille; i++)
    {
        if (tab[i] == cible)
        {
            return i; // Renvoie l'indice où se trouve l'élément
        }
    }
    return -1; // -1 indique que l'élément n'a pas été trouvé
}

5. Programme complet d'application#

gestion_notes.c
#include <stdio.h>

#define CAPACITE 6

float CalculerMoyenne(const float tab[], int taille);
int CompterAdmis(const float tab[], int taille);

int main(void)
{
    float evaluations[CAPACITE] = {14.5f, 8.0f, 17.25f, 11.0f, 9.5f, 16.0f};

    printf("=========================================\n");
    printf("       ANALYSE DU RELEVE DE NOTES        \n");
    printf("=========================================\n");

    printf("Liste des notes : ");
    for (int i = 0; i < CAPACITE; i++)
    {
        printf("%.2f  ", evaluations[i]);
    }
    printf("\n-----------------------------------------\n");

    float moy = CalculerMoyenne(evaluations, CAPACITE);
    int admis = CompterAdmis(evaluations, CAPACITE);

    printf("Moyenne du groupe : %.2f / 20\n", moy);
    printf("Nombre d'admis    : %d / %d (>= 10.0)\n", admis, CAPACITE);
    printf("=========================================\n");

    return 0;
}

float CalculerMoyenne(const float tab[], int taille)
{
    float somme = 0.0f;
    for (int i = 0; i < taille; i++)
    {
        somme += tab[i];
    }
    return somme / (float)taille;
}

int CompterAdmis(const float tab[], int taille)
{
    int compteur = 0;
    for (int i = 0; i < taille; i++)
    {
        if (tab[i] >= 10.0f)
        {
            compteur++;
        }
    }
    return compteur;
}

Vous maîtrisez les vecteurs à une dimension. Passons au niveau supérieur avec les grilles bidimensionnelles : les matrices.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue