Vous êtes sur la page 1sur 3

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 
 

Vous aimerez peut-être aussi