• Aucun résultat trouvé

I3:Appelsdefonctions,récursivité TPn 2

N/A
N/A
Protected

Academic year: 2022

Partager "I3:Appelsdefonctions,récursivité TPn 2"

Copied!
2
0
0

Texte intégral

(1)

IUT de Villetaneuse - Département R&T RT1 - 2011-2012

TP n

o

2

I3 : Appels de fonctions, récursivité

Exercice 1 [Passage de paramètres]

1. Considérons le programme C suivant : 1 #i n c l u d e <s t d i o . h>

2 #i n c l u d e < s t d l i b . h>

3

4 void i n v e r s e r ( i n t a , i n t b ) {

5 i n t tmp ;

6 tmp = a ;

7 a = b ;

8 b = tmp ;

9 }

10

11 i n t main ( ) { 12

13 i n t v a l 1 , v a l 2 ; 14

15 p r i n t f ( " E n t r e z l e p r e m i e r e n t i e r : \ n" ) ; 16 s c a n f ( "%d" , &v a l 1 ) ;

17 p r i n t f ( " E n t r e z l e deuxieme e n t i e r : \ n" ) ; 18 s c a n f ( "%d" , &v a l 2 ) ;

19

20 i n v e r s e r ( v a l 1 , v a l 2 ) ; 21

22 p r i n t f ( " V a l e u r s a p r e s i n v e r s i o n : v a l 1 = %d , v a l 2 = %d\n" ,

23 v a l 1 , v a l 2 ) ;

24

25 return EXIT_SUCCESS ;

26 }

Quelles seront les valeurs affichées ? Le programme a-t-il le comportement désiré ? 2. Que faut-il modifier pour obtenir le bon résultat ?

Exercice 2 [Portée des variables]

Qu’affiche le programme C suivant ? Expliquez en détail votre réponse.

1 #i n c l u d e <s t d i o . h>

2 #i n c l u d e < s t d l i b . h>

3

4 void a f f i c h e 1 ( i n t x ) {

5 x = x + 1 ;

6 p r i n t f ( ‘ ‘ a f f i c h e 1 : x = %d\n" , x ) ;

7 }

8

9 i n t a f f i c h e 2 ( i n t x ) {

Camille Coti – camille.coti@iutv.univ-paris13.fr

1/2

(2)

IUT de Villetaneuse - Département R&T RT1 - 2011-2012

10 x = x + 1 ;

11 p r i n t f ( ‘ ‘ a f f i c h e 1 : x = %d\n" , x ) ;

12 return x ;

13 }

14

15 i n t main ( ) {

16 i n t x ;

17 x = 1 0 ;

18 p r i n t f ( ‘ ‘ main : x = %d\n" , x ) ; 19 a f f i c h e 1 ( x ) ;

20 p r i n t f ( ‘ ‘ main : x = %d\n" , x ) ; 21 x = a f f i c h e 2 ( x ) ;

22 p r i n t f ( ‘ ‘ main : x = %d\n" , x ) ;

23 r e t u r n EXIT_SUCCESS ;

24 }

Exercice 3 [Calcul récursif de factorielle]

On veut calculer la valeur de

!n.

1. Quelle est la formule permettant de calculer

!n

? 2. Quelle est la relation entre

!n

et

!(n−1)

?

3. Écrire une fonction C qui calcule récursivement la valeur de

!n.

Exercice 4 [Calculatrice en ligne de commande]

Écrivez un programme C dont les arguments constituent une expression arithmétique simple (addi- tion, soustraction, multiplication, division) de la forme : ./calcul operande1 operateur operande2.

Les opérandes sont des nombres entiers et l’opérateur est un caractère.

Par exemple, ./calcul 12 + 24 va afficher 12 + 24 = 36.

Exercice 5 [Algorithme d’Euclide]

Vous avez vu en TD l’algorithme d’Euclide. Implémentez en C l’algorithme d’Euclide afin de donner le plus grand commun diviseur de deux entiers passés en arguments du programme. Vous écrirez deux versions de ce programme : la première utilisant une boucle, la deuxième utilisant une fonction récursive.

Vous pourrez utiliser la fonction floor() (à regarder dans l’aide en ligne). Vous devrez utiliser la bibliothèque libm fournissant des fonctions mathématiques (dont la fonction floor()) : ajoutez l’option -lm à la fin de votre ligne de compilation.

Camille Coti – camille.coti@iutv.univ-paris13.fr

2/2

Références

Documents relatifs

 Le plus grand terme en haut (on ne peut pas déplacer les termes)..  Les virgules

En second : On place la virgule au résultat en comptant le nombre de chiffres au total après la virgule.. III) Comment effectuer un calcul mentalement ? 1) En

La dernière version du modèle Mésange (Insee et DG Trésor) fait l’inverse de la Banque de France, elle injecte l’estimation issue de l’équation d’emploi dans

Le nombre entier est un nombre décimal qui peut s’écrire sous forme d’une fraction ayant pour dénominateur

cette opération , est de retrancher le diviseur du dividende autant de fois qu’on le pourra et de compter les soustractions dont le nombre sera le quotient

questions flash du LMS95 a propos´ e en plusieurs fois ` a leurs ´ el` eves 6 s´ eries compos´ ees de 5 ou 6 questions chacune pour leur permettre de mettre en place la somme,

questions flash du LMS95 a propos´ e en plusieurs fois ` a leurs ´ el` eves 6 s´ eries compos´ ees de 5 ou 6 questions chacune pour leur permettre de mettre en place la somme,

Solide limité par un polygone appelé la base et par au moins trois triangles appelés faces latérales qui se rejoignent en un même