Exo & Corrigés Les Pointeurs en Langage C
Exo & Corrigés Les Pointeurs en Langage C
Exo & Corrigés Les Pointeurs en Langage C
Exercice 1 :
int A[ ] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
int *P;
P = A;
Quelles valeurs ou adresses fournissent ces expressions:
a) *P+2
b) *(P+2)
c) &P+1
d) &A[4]-3
e) A+3
f) &A[7]-P
g) P+(*P-10)
h) *(P+*(P+8)-A[7])
Solution :
int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
int *P;
P = A;
a) *P+2=>la valeur 14
b) *(P+2)=>la valeur 34
Exercice 2 :
Ecrire un programme en langage C qui lit un entier X et un tableau A du type int au clavier et
élimine toutes les occurrences de X dans A en tassant les éléments restants. Le programme
utilisera les pointeurs P1 et P2 pour parcourir le tableau.
Solution :
#include <stdio.h>
main()
/* Déclarations */
scanf("%d", P1);
}
printf("Introduire l'élément X à éliminer du tableau : ");
scanf("%d", &X );
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
/* Edition du résultat */
printf("\n");
return 0;
Exercice 3 :
Ecrire un programme en langage C qui range les éléments d'un tableau A du type intdans
l'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE
pour la permutation des éléments.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
scanf("%d", &N );
scanf("%d", P1);
/* Affichage du tableau */
printf("\n");
/* Inverser la tableau */
AIDE = *P1;
*P1 = *P2;
*P2 = AIDE;
}
/* Edition du résultat */
printf("\n");
return 0;
Exercice 4 :
Ecrire un programme en langage C qui lit deux tableaux d'entiers A et B et leurs dimensions N et
M au clavier et qui ajoute les éléments de B à la fin de A. Utiliser deux pointeurs PA et PB pour
le transfer et afficher le tableau résultant A.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
scanf("%d", &N );
{
printf("Elément %d : ", PA-A);
scanf("%d", PA);
scanf("%d", &M );
scanf("%d", PB);
printf("\n");
printf("\n");
/* Copier B à la fin de A */
*PA = *PB;
/* Nouvelle dimension de A */
N += M;
/* Edition du résultat */
printf("\n");
return 0;
Exercice 5 :
Ecrire de deux façons différentes, un programme en langage C qui vérifie sans utiliser une
fonction de <string>, si une chaîne CH introduite au clavier est un palindrome:
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
gets(CH);
J--;
PALI=1;
if (CH[I] != CH[J])
PALI=0;
/* Affichage du résultat */
if (PALI)
else
return 0;
#include <stdio.h>
main()
{
/* Déclarations */
gets(CH);
P2--;
PALI=1;
/* Affichage du résultat */
if (PALI)
else
return 0;
}
Exercice 6 :
Ecrire un programme en langage C qui lit une chaîne de caractères CH et détermine la longueur
de la chaîne à l'aide d'un pointeur P. Le programme n'utilisera pas de variables numériques.
Solution :
#include <stdio.h>
int main()
{
/* Déclarations */
/* Affichage du résultat */
return 0;