Université Cadi Ayad- Marrakech
Faculté des Sciences – Semlalia
Département Informatique
Programmation I : TP5
(Fonctions et Récursivité)
Exercice 1 : Ecrire un programme C qui affiche les carrés des éléments d'un tableau d'entiers en
utilisant les deux méthodes suivantes : la première se base sur une fonction Affiche_Carre qui prends
en paramètre le tableau est affiche les carrés de tous ses éléments, et la deuxième utilise une
fonction Carre qui affiche le carré d'un entier entré en paramètre.
n!
C n=
k
Exercice 2 : Le nombre de combinaisons de k éléments parmi n est donné par :
k!(n − k)!
k
Ecrivez une fonction qui permet de calculer les coefficients binomiaux C n .
Exercice 3 : Ecrire une fonction palindrome qui prend en paramètre une chaîne de caractère et qui
teste si la chaîne est un palindrome. On appelle palindrome une suite de caractères qui se lit de la
même façon dans les deux sens.
Exemple: ''laval'', ''ressasser ''.
Exercice 4 :
a) Ecrire la fonction LIRE_DIM à quatre paramètres L, LMAX, C, CMAX qui lit les dimensions L et C
d'une matrice à deux dimensions. Les dimensions L et C doivent être inférieures à LMAX
respectivement CMAX.
b) Ecrire la fonction LIRE_MATRICE à quatre paramètres MAT, L, C, et CMAX qui lit les
composantes d'une matrice MAT du type int et de dimensions L et C.
c) Ecrire la fonction ECRIRE_MATRICE à quatre paramètres MAT, L, C et CMAX qui affiche les
composantes de la matrice de dimensions L et C.
d) Ecrire la fonction SOMME_MATRICE du type long qui calcule la somme des éléments d'une
matrice MAT du type int. Ecrire un programme qui teste la fonction SOMME_MATRICE.
Exercice 5 : Écrire une fonction récursive calculant la valeur de la « fonction d’Ackermann » définie
pour m>0 et n>0 par :
A(m,n) = A(m-1,A(m,n-1)) pour m>0 et n>0
A(0,n) = n+1 pour n>0
A(m,0) = A(m-1,1) pour m>0
Ecrire un programme qui teste la fonction récursive
Exercice 6 : en utilisant la récursivité, définir la fonction d'entête : int deuxPuissance(int n) qui
retourne la valeur de 2𝑛 (2 à la puissance n) (on suppose n>=0)
Exercice 7 : écrire une fonction récursive int pgcd(int a,int b) qui calcule le plus grand
commun diviseur de 2 entiers a et b
Exercice 8 (structure de données) :
1. Déclarer une variable P de la structure Personne ayant les informations suivantes:
Nom (chaîne de caractères)
Prénom (chaîne de caractères)
Date de naissance: Jour (entier), Mois (entier) et Année (entier)
Matricule (chaîne de caractères)
2. Remplir P avec les informations suivantes:
Nom:"Amer"
Prénom: "Salem"
Date denaissance: "03/04/2005"
Matricule: "A32"
3. Afficher par la suite toutes les informations de la Personne P .