Université Sidi Mohamed Ben Abdellah 2020/2021
Faculté des Sciences et Techniques de Fès
Département Informatique
Algorithmique et programmation
1ère année SICoM
Solution TD : Série N° 2
Exercice 1
Compléter le tableau suivant :
A B C P1 P2
Initialisation 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
++*P2
*P1*=*P2
A=++*P2**P1
P1=&A
Exercice 2
Donner le résultat d’exécution du programme suivant :
#include <stdio.h> int reculer3(int *x){ reculer2(y );
void avancer1(int x *x-=3; printf("\n y=%d",y);
){ return *x ; y=avancer2(&x);
x+=1; } printf("\n y=%d",y);
} main( ){ printf("\n x=%d",x);
int avancer2(int *x){ int x=6, y=1; y=reculer3(&x);
*x+=2; avancer1(x); printf("\n y=%d",y);
return *x ; printf("\n x=%d",x); printf("\n x=%d",x);
} x=avancer2(&y); x=reculer3(&y);
void reculer2( int x){ printf("\n y=%d",y); printf("\n x=%d",x);
x-=2; printf("\n x=%d",x); printf("\n y=%d",y);
1/3
} }
Exercice 3
1. Ecrire une fonction qui échange le contenu de deux variables entières. Compléter les exemples
d'utilisation suivants:
1) void main()
{
int a = 10, b = 22;
Echanger( );
/* ici on doit avoir a == 22 et b == 10 */
}
2) void main()
{
int *a, *b;
/* saisir a et b*/
scanf( … ) ;
Echanger( … );
printf(’’%d%d ’’, *a,*b) ;
}
2. En utilisant la fonction Echanger, écrire une fonction Permute3 qui effectue une permutation
circulaire de trois variables, comme dans l'exemple ci-dessous :
void
{
int a = 10, b = 22, c = 33;
Permute3( &a, &b, &c );
/* ici a == 33, b == 10, c == 22 */
}
Exercice 4
Le programme incomplet suivant doit réaliser la division entière de n par d.
void divint(.,.,.,.)
...
}
void main()
{
int n,d,q,r ;
printf(" donner n et d ") ;
scanf("%d%d ",&n,&d) ;
divint(.,.,.,.) ;
printf("%d%d",q,r) ;
Compléter ce programme en utilisant uniquement les opérateurs + et -.
Exercice 5
Le nombre de combinaisons de i dans n est défini par :
1. Ecrire une fonction qui calcule le nombre de combinaisons de i dans n.
2. Le triangle de Pascal est défini par :
2/3
Ecrire une fonction qui édite le triangle de Pascal
Exercice 6
1. Ecrire les fonctions suivantes :
● Premier p rend en entrée un entier et retourne 1 si l’entier est premier et 0 sinon.
● Parfait p rend en entrée un entier et retourne 1 si l’entier est parfait et 0 sinon.
Parfait s’il est égal à la somme de ses diviseurs stricts.
● Triangulaire prend en entrée un entier et retourne 1 si l’entier est triangulaire et 0 sinon.
2. Les fonctions ci-dessus sont codées respectivement par les valeurs 1, 2 et 3. Ecrire le programme
C qui saisit un entier n et un code, exécute la fonction correspondante et affiche le résultat.
Exercice 7
Ecrire La fonction récursive Produit qui calcule le produit de deux entiers selon le principe récursif
suivant :
a * b = a* (b -1) + a si b est impair
a * b = 2 * a * b / 2 si b est pair et différent de 0
a*b =0 si b est nul.
3/3