Serie Corrigu00e9e Pointeurs en C PDF
Serie Corrigu00e9e Pointeurs en C PDF
Serie Corrigu00e9e Pointeurs en C PDF
Les pointeurs en c
Exercice 1
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>
{ int i,n,t[10],s=0;
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()
fonction(&max,&min,&moy);
getch();
Correction exercice 3
#include<stdio.h>
#include<conio.h>
Void main()
{int t[10],n ;
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++)
scanf("%d", Pt +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 * P;
for (P=PT; P<PT+n; P++)
{
printf("Elément %d : ", P-PT);
scanf("%d", P);
}
}
/* 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*p; p=s;
while(*p!='\0')
{if(*p==c)
{return(p);}
else
{p++;}
return(NULL);}
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;
gets(s);
scanf("%c",&c);
p=recherche_char(s,c);
puts(p);
k=compte_char(s,c);
printf("%d ",k);
getch();}
C.Jlassi Page 7