Vous êtes sur la page 1sur 7

Série d’exercices

Les pointeurs en c

Exercice 1

Soit P un pointeur qui "pointe" sur un tableau A:


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- P+(*P-10)
g- *(P+*(P+8)-A[7])
Exercice 2
Donner un programme c qui calcule la moyenne, le minimum et le maximum d’un tableau
unidimensionnels le programme utilise la fonction suivante :

void fonction(int *max,int *min,int *moy)

Exercice 3
Écrire un programme qui range les éléments d'un tableau A du type int dans l'ordre inverse.
Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE pour la
permutation des éléments.
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 et affiche le
tableau résultant A. Utiliser les pointeurs.
Exercice 5
Écrire une fonction char * recherche_char (char* s, char c) qui renvoie un pointeur vers la
première occurr

ence du caractère c (le caractère passé en argument, pas le caractère ’c’) dans la chaine s. Si
ce caractère n’apparait pas dans la chaine, la fonction devra renvoyer NULL

C.Jlassi Page 1
Exercice 6
À l’aide de recherche_char, écrire une fonction int compte_char (char *s, char c) qui
compte le nombre d’occurrences de c dans s.

CorrectionExercice1:

a- *P+2 = 14
b- *(P+2) =34
c- &P+1
d- &A[4]-3 =&A[1]
e- A+3 =&A[3]
f- P+(*P-10) =34
g- *(P+*(P+8)-A[7]) =23

CorrectionExercice2:

/*Donner une fonction qui retourne la moyenne, le minimum et le maximum d'un tableau
unidimensionnels */

#include<stdio.h>

#include<conio.h>

void fonction(int *max,int *min,int *moy)

{ int i,n,t[10],s=0;

printf("donner la taille du tableaux");

scanf("%d",&n);

for(i=0;i<n;i++)

{printf("t[%d]=",i);

scanf("%d",&t[i]);

*min=t[0];

*max=t[0];

for(i=0;i<n;i++)

C.Jlassi Page 2
{ s=s+t[i];

if(t[i]<*min)

{ *min=t[i]; }

if(t[i]>*max)

{*max=t[i]; }

*moy=s/n;

Void main()

{ int max, min, moy;

fonction(&max,&min,&moy);

printf(" le max est %d le min est %d la moyenne est %d",max,min,moy),

getch();

Correction exercice 3

#include<stdio.h>

#include<conio.h>

Void lire_tab (int *, int)

Void inverse_tab (int *, int)

Void main()

{int t[10],n ;

printf("donnez la dimension du tab");

scanf("%d",&n);

lire_tab( t,n) ;

inverse_tab(t,n) ;

C.Jlassi Page 3
Void lire_tab ( int * Pt, int n)

{ int i;

for(i=0;i<n;i++)

{printf("donnez les valeurs Pt[%d]=",i);

scanf("%d", Pt +i);}

void inverse_tab(int *Pt, int n)

int *P1, *P2, aide,i ;

P1= Pt ;

P2=Pt+n-1;

while (P1<P2)

{aide=*P1;

*P1=*P2;

*P2=aide;

P1++;

P2--;}

for(i=0;i<n;i++)

printf("Pt[%d]=%d",i,Pt[i]);

getch();

C.Jlassi Page 4
Correction exercice 4
#include <stdio.h>
Void lire_tab (int * , int)
Void affiche_tab (int *, int)
Void ajout_tab (int *, int*, int, int)

Void main()
{

int A[100], B[50]; /* tableaux */


int N, M; /* dimensions des tableaux */

printf (" donnez la dimension de A") ;


printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
lire_tab (A, N);
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
lire_tab (B, M);
ajout_tab (A, B, N, M);
affiche_tab(A, (N+M);
}

Void lire_tab (int * PT , int n)


{

Int * P;
for (P=PT; P<PT+n; P++)
{
printf("Elément %d : ", P-PT);
scanf("%d", P);
}
}

Void affiche_tab (int *PT,int n)


{
Int * P ;
for (P=PT; P<PT+n; P++)

printf("Elément %d : ", *P);


}
Void ajout_tab (int *PA, int *PB, int n, int m)
{
Int *P1, int *P2;

/* Copier B à la fin de A */
for (P1=PA+n,P2=PB ; P2<PB+m ; P1++,P2++)
*P1 = *P2;
}
C.Jlassi Page 5
Exercice5et6:

#include<stdio.h>

#include<conio.h>

#include<string.h>

char * recherche_char(char* s,char c) //pour indiqer le caractére chercher

// f contient la taille de la chaine

{ char*p; p=s;

while(*p!='\0')

{if(*p==c)

{return(p);}

else

{p++;}

return(NULL);}

int compte_char(char *s, char c)

char*p; p=s;

int k=0;

while(p=recherche_char(s, c))

{k++;

s=p++;}

return(k);

void main()

C.Jlassi Page 6
{char s[100],c,*p;

int k;

printf("ecrire le texte \n");

gets(s);

printf("donnez la lettre \n");

scanf("%c",&c);

p=recherche_char(s,c);

puts(p);

k=compte_char(s,c);

printf("%d ",k);

getch();}

C.Jlassi Page 7