Home- Exercices - Solutions des exercices

 

Page Précédente - Page Suivante


Solutions des Exercices chapitre 9: les pointeurs

Exercice 9.1

A 

B 

C 

P1 

P2 

Init. 

1 

2 

3 

/ 

/ 

P1=&A 

1 

2 

3 

&A 

/ 

P2=&C 

1 

2 

3 

&A 

&C 

*P1=(*P2)++ 

3 

2 

4 

&A 

&C 

P1=P2 

3 

2 

4 

&C 

&C 

P2=&B 

3 

2 

4 

&C 

&B 

*P1-=*P2 

3 

2 

2 

&C 

&B 

++*P2 

3 

3 

2 

&C 

&B 

*P1*=*P2 

3 

3 

6 

&C 

&B 

A=++*P2**P1 

24 

4 

6 

&C 

&B 

P1=&A 

24 

4 

6 

&A 

&B 

*P2=*P1/=*P2 

6 

6 

6 

&A 

&B 

 

Exercice 9.2
#include <stdio.h>
main()
{

 int A[100], B[50];

 int N, M; 

 int I;    
 

 printf("Taille du tableau A: ");
 scanf("%d", &N );

 for (I=0; I<N; I++)
     {
      printf("Elément %d : ", I);
      scanf("%d", A+I);
     }
 printf("Taille du tableau B: ");
 scanf("%d", &M );
 for (I=0; I<M; I++)
     {
      printf("Elément %d : ", I);
      scanf("%d", B+I);
     }

 

 printf("Tableau donné A :\n");
 for (I=0; I<N; I++)
      printf("%d ", *(A+I));
 printf("\n");

 printf("Tableau donné B :\n");
 for (I=0; I<M; I++)
      printf("%d ", *(B+I));
 printf("\n");

 

 for (I=0; I<M; I++)
       *(A+N+I) = *(B+I);

 N += M;

 printf("Tableau résultat A :\n");
 for (I=0; I<N; I++)
       printf("%d ", *(A+I));
 printf("\n");

}

Exercice 9.3
Les boucles de pointeurs :
for (P=A ; P<A+N ; P++)
{

}
Dans ces boucles, le pointeur P est incrémenté à la fin du bloc d'instruction et comparé ensuite à la condition de la boucle. Si la condition est remplie, P pointe déjà à l'extérieur du tableau; plus précisément sur le premier élément derrière le tableau.
Exercice 9.4


a) 

*P+2 

=> 

la valeur 14 

b) 

*(P+2) 

=> 

la valeur 34 

c) 

&P+1 

=> 

l'adresse du pointeur derrière le pointeur P 

(rarement utilisée) 

d) 

&A[4]-3 

=> 

l'adresse de la composante A[1] 

e) 

A+3 

=> 

l'adresse de la composante A[3] 

f) 

&A[7]-P 

=> 

la valeur (indice) 7 

g) 

P+(*P-10) 

=> 

l'adresse de la composante A[2] 

h) 

*(P+*(P+8)-A[7]) 

=> 

la valeur 23 

Exercice 9.5
#include <stdio.h>
main()
{

 int A[50];   

 int N;       

 int X;       

 int *P1, *P2;

 printf("Taille du tableau: ");
 scanf("%d", &N );

 for (P1=A; P1<A+N; P1++)
     {
      printf("Elément %d : ", P1-A);
      scanf("%d", P1);
     }
  printf("donnez X : ");
 scanf("%d", &X );

 

 for (P1=A; P1<A+N; P1++)
     printf("%d ", *P1);
  printf("\n");

 

 for (P1=P2=A; P1<A+N; P1++)
     {
      *P2 = *P1;
      if (*P2 != X)
           P2++;
     }

 N = P2-A;

 for (P1=A; P1<A+N; P1++)
     printf("%d ", *P1);
  printf("\n");

}

Exercice 9.6
#include <stdio.h>
main()
{

 int A[50];   
 int N;       
 int AIDE;    
 int *P1, *P2;

 printf("taille du tableau: ");
 scanf("%d", &N );

 for (P1=A; P1<A+N; P1++)
     {
      printf("Elément %d : ", P1-A);
      scanf("%d", P1);
     }

 for (P1=A; P1<A+N; P1++)
     printf("%d ", *P1);
  printf("\n");

 for (P1=A,P2=A+(N-1); P1<P2; P1++,P2--)
     {
      AIDE = *P1;
      *P1  = *P2;
      *P2  = AIDE;
     }

 for (P1=A; P1<A+N; P1++)
      printf("%d ", *P1);
  printf("\n");

}


 


Home- Exercices - Solutions des exercices
Copyright © 2019