Académique Documents
Professionnel Documents
Culture Documents
Contrôle de Programmation
Filière SMP S4
(Durée: 2h)
Exercice 1: (5 points)
1) Ecrire un algorithme qui permet de lire deux nombres réels a et b et d’afficher leur somme
dans le cas où les deux variables sont strictement positives.
2) Ecrire sur la feuille d’examen les affichages attendus pour les programmes suivants :
a) b) c)
main() main() main()
{ { {
int i; int a,i=5; int i,j;
for(i=0;i<10;i++); a=(2,i,i+1); for(i=0,j=0;i<2,j<4;i++,j++)
printf("%d\n",i*i); printf("%d\n",a); printf("%d %d\n",i,j);
} } }
Exercice 2: (4 points)
Soit le programme suivant :
#include<stdio.h>
main( )
{
int i, n, som = 0 ;
for(i=0;i<4;i++)
{
printf("Donner un entier:");
scanf("%d",&n);
som +=n;
}
printf("somme = %d\n",som);
}
Ecrire un programme réalisant exactement la même chose, en employant à la place de l’instruction for :
a) une instruction while
b) une instruction do … while
2)
a) b) c)
100 6 0 0
1 pts
1 1
1 pts
pop 1 pts 2 2
pop
ts pop 3 3
ts
ts
Exercice 2: (4pts)
///affichage de A
printf("\n");
for(i=0;i<N;i++) printf("%d\t",A[i]); 0.5 pts
puts("\n"); popts
///combin a deux
for(i=0;i<N;i++)
1.5 pts
for(j=0;j<N;j++)
popts
printf("(%d,%d)\t",A[i],A[j]);
puts("\n");
///combin a trois
NC=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(k=0;k<N;k++)
2.5 pts
{ popts
T[NC]=A[i]*100+A[j]*10+A[k];
NC++;
}
printf("\nNC=%d",NC);
puts("\n");
///tri croissant
for(i=0;i<NC-1;i++)
for(j=i+1;j<NC;j++)
1 pts {
popts if(T[i]>T[j]) tmp=T[i],T[i]=T[j],T[j]=tmp;}
///completer T de 0 à 999
k=NC;
for(i=0;i<1000;i++)
{
for(exist=1,j=0;j<NC;j++)
if(i==T[j]) exist =0; 3 pts
if(exist) popts
{
T[k]=i;
k++;
}
}
puts("\n");
}