Saisie et affichage inversé
Écrire un programme qui lit un entier n (avec 1 ≤ n ≤ 100), puis n entiers dans un tableau, et les affiche du dernier au premier.
Voir le corrigé Masquer le corrigé
Corrigé de l'exercice 1
#include <stdio.h>
#define MAX 100
int main(void)
{
int tab[MAX];
int n, i;
printf("Nombre d'elements (1 a %d) : ", MAX);
if (scanf("%d", &n) != 1 || n < 1 || n > MAX) {
printf("Taille invalide.\n");
return 1;
}
for (i = 0; i < n; i++) {
printf("tab[%d] = ", i);
scanf("%d", &tab[i]);
}
printf("Tableau inverse : ");
for (i = n - 1; i >= 0; i--)
printf("%d ", tab[i]);
printf("\n");
return 0;
}
Deux points méritent attention. D'abord l'indexation : un tableau de n cases va de l'indice 0 à n-1. La boucle d'affichage part donc de n-1 et descend jusqu'à 0 inclus, d'où la condition i >= 0.
Ensuite la taille : en C, un tableau statique doit avoir une taille connue à la compilation. On réserve donc MAX cases et on n'en utilise que n. Sans le test sur n, une saisie de 500 déborderait du tableau : l'erreur la plus courante, et la plus difficile à diagnostiquer.