Vous êtes sur la page 1sur 1

IRT21 - Programmation C et structures de données

TP1

Exercice 1. Ecrire un programme C qui continue à demander à l’utilisateur de saisir des nombres réels
jusqu’à la saisie du nombre zéro. Le programme doit afficher la somme des nombres positifs et le
produit des nombres négatifs.

Exercice 2. Ecrire une fonction estParfait() qui prend en paramètre un entier et retourne 1 si
l’entier est parfait et 0 sinon. Nous rappelons qu’un nombre est dit parfait s’il est égal à la somme de
ses diviseurs propres. Le prototype de la fonction doit être déclaré dans un fichier « .h ». Utiliser la
fonction estParfait() pour afficher tous les nombres parfaits inferieurs à 200.

Exercice 3. La suite de Fibonnaci est définie comme suit.

• F0=F1=1
• Fn=Fn-1+Fn-2 pour tout n>1.
1. Ecrire une fonction itérative fibo1 et une fonction récursive fibo2 qui prennent un entier
n en paramètre et retournent Fn.
2. Comparez le temps d’exécution de deux fonctions pour n=20, n=40 et n=60.

Exercice 4. Ecrire un programme qui génère un nombre entier aléatoire N dans l’intervalle [10,200],
et il demande à l’utilisateur de le deviner. Le programme affiche à l’utilisateur une information sur le
positionnement du nombre saisi par rapport au nombre à deviner en affichant « Le nombre
recherché est plus petit, ou le nombre recherché est plus grand ». Le programme s’arrête quand
l’utilisateur trouve le nombre N ou il dépasse 10 essais. Pour générer un nombre entier aléatoire,
utiliser les fonctions srand et rand des bibliothèques stdlib.h et time.h.
srand (time (NULL));
int a=rand();

Exercice 5. Passage par valeur vs passage par adresse

1. Ecrire deux fonctions f et g qui multiplient par deux un entier n donnée en argument. Les
prototypes de deux fonctions sont décrits ci-dessous.
void f(int n) ;
void g(int *n) ;

2. Ecrire un programme main qui demande à l’utilisateur la saisie d’un entier n et qui affiche
l’entier avant et après l’appelle de f et g.

Exercice 6. Pointeurs, allocation dynamique

Considérons les deux variables a et b déclarées comme suit.


int *a ;
char *b ;

Ecrire un programme C qui alloue deux zones mémoires pour a et b et qui remplit ces zones par des
valeurs saisies par l’utilisateur.

Vous aimerez peut-être aussi