Informatique III : Langage C
TP3
Exercice 1: Pointeurs
Essayer de comprendre les codes suivant :
a)
#include <stdio.h>
main()
{
double x;
printf("%d\n",&x);
}
b)
#include <stdio.h>
main()
{
char tab[10000];
printf("%d %d\n",tab,&tab[0]);
}
c)
#include <stdio.h>
main()
{
float x=1.6,y=3.9,m;
float*pt_x=&x;
float*pt_y,*pt_m=&m;
pt_y=&y;
*pt_m=*pt_x * *pt_y;
printf("%d %d %d\n\n", pt_x, pt_y, pt_m);
printf("%f %f %f\n",*pt_x, *pt_y,m);
}
Exercice 2: Tableau et pointeurs
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;
Page 1
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])
2. Ecrire de deux façons différentes, un programme qui lit 10 nombres entiers dans un
tableau avant d'en rechercher le plus grand et le plus petit.
a) en utilisant le "formalisme tableau"
b) en utilisant le" formalisme pointeur", à chaque fois que cela est possible.
Exercice 3: (Tableaux)
Écrire un programme C de saisie d’un tableau d’entiers, de tri du tableau, et d’affichage du
tableau après tri.
L’algorithme de tri demandé est le suivant
Mettre le plus petit entier en première position du tableau, on opère par comparaison deux à
deux entre le premier élément et un élément de l’indice i du tableau. On échange les deux
éléments lorsque ceux-ci ne sont pas dans un ordre correct.
Page 2