École Supérieure de Technologie
et d’Informatique
A.U. 2011/2012
Série les pointeurs
Informatique Appliquée 1ère année
Exercice 1 : (extrait de l’examen de la session de rattrapage de l’année 2009/2010)
Soit le programme suivant :
#include<stdio.h>
void main()
{
int tab[5]={4,7,2,9,6};
int p, q;
p=tab;
q=tab+4;
q-=2;
p++;
(tab+3)=p+*q;
(tab+4)=(q-1)-*(p+1);
p+=tab-q ;
q-=p-(tab+3);
tab[0]=p-q ;
p=q ;
q
p
*q
Publicité
*p
…… …..
}
Remplir le tableau suivant (seulement les cellules contenant des pointillés), en supposant que :
&tab[0] : F50 ; &tab[1] : F54 ; &tab[2] : F58 ; &tab[3] : F5C ; &tab[4] : F60 ;
Instructions
p=tab
q=tab+4;
q-=2;
p++;
(tab+3)=p+*q;
(tab+4)=(q-1)-
*(p+1);
p+=tab-q ;
q-=p-(tab+2)-1;
tab[0]=p-q ;
tab[0]
tab[4]
tab[2]
….. ….. ….. ….. …..
….. …..
….. …..
….. …..
….. …..
….. …..
Publicité
tab[1]
tab[3]
…..
…..
…..
p=q ;
….. …..
Exercice 2 :
Remplir le tableau ci dessous
main()
{
int A = 1;
int B = 2;
int C = 3;
int P1, P2;
P1=&A;
1
P2=&C;
P1=(P2)++;
P1=P2;
P2=&B;
P1-=P2;
++*P2;
P1=*P2;
A=++P2*P1;
Publicité
P1=&A;
P2=P1/=*P2;
return 0;
}
A B C P1 P2
1 2 3 /
/
1 2 3 &A /
Init.
P1=&A
P2=&C
P1=(P2)++
P1=P2
P2=&B
P1-=P2
++*P2
P1=*P2
A=++P2*P1
P1=&A
P2=P1/=*P2
Exercice 3
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)
Publicité
b)
c)
d)
e)
f)
g)
h)
*P+2
*(P+2)
&P+1
&A[4]-3
A+3
&A[7]-P
P+(*P-10)
(P+(P+8)-A[7])
Exercice 4 :
Ecrire un programme 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. Utiliser les pointeurs.
Exercice 5 :
Ecrire 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.
2