Vous êtes sur la page 1sur 4

UNIVERSITE MOHAMMED V de Rabat Contrôle final Juin 2018

Faculté des Sciences Programmation C SMP4 - A


Code Nom Prénom

Exercice 1: Que vont afficher les programmes suivants: (répondre en face des questions) 8 pts
main() (1pt)
{ char a=16, b=5 ; 10
printf ("%d", 2*a/b+4); }
-----------------------------------------------------------------------------------------------------------------------
main() (1pt)
{ int a = 12, i = 0; 12
for ( ; i< a ; i+=2) i++;
printf ("%d\n" ,i);}
-----------------------------------------------------------------------------------------------------------------------
main() (1pt)
{ int n = 12, i=10 ; 110 - 132 –
while ( i<n )
printf ("%d - " ,i* i++ ) ; }
-----------------------------------------------------------------------------------------------------------------------
main() (1pt) 0.857
{ float a=7, b=6; int c=18;
printf (" %.3f ", !a?a*=c:b/a);}
-----------------------------------------------------------------------------------------------------------------------
#define Faux 0 (1pt)
main()
{ int n=8, i =-5 , stop = Faux;
do {
8 9
if ( n == 10)
stop = i ;
else
printf ("%d\t" , n++);
}while ( !stop ); }
-----------------------------------------------------------------------------------------------------------------------
main() (1pt)
{ void cube (double x, double y );
int n=5; long p= 0 ;
cube (n, p) ; Le cube de 5 est 0
printf ("Le cube de %d est %ld", n, p) ;}

void cube (double a, double b)


{ b = a * a * a ; return b; }
-----------------------------------------------------------------------------------------------------------------------
main() (2pts)
{ int t[] = {12,23, 34, 45, 56, 67};
int *p = t,*q; 34
p+=2 ; q=p+2; 11 , 23
*(t+4) = t[1];
printf(" %d\n%d , %d", *p, *q/2, t[q-t]);}
Exercice 2: 12pts
a) Ecrire un programme en C qui déclare une matrice T de type entier de dimensions maximales 150 lignes
et 250 colonnes en utilisant des directives du préprocesseur 2pts
b) Les dimensions l et c de la matrice T sont lues au clavier avec les vérifications nécessaires 2pts
c) Puis remplir la matrice T par des valeurs aléatoires comprises entre -20 et 120. 2pts
d) X est un tableau de réels de l lignes. Remplir le tableau X par le minimum de chaque ligne de T. 3pts
e) En utilisant le tri par insertion, donnez une fonction qui trie le tableau X par ordre croissant. 3pts

int main()
{
// question a)
int T[150][250],i,j,l,c;
int Max=120,Min=-20;
float X[150];

// question b)
do
{
printf("\ndonnez le nombre de lignes < 150 : ");
scanf("%d",&l);
}while(l<2||l>150);
do
{
printf("\ndonnez le nombre de colonnes < 250 : ");
scanf("%d",&c);
}while(c<2||c>250);

// question c)
srand(time(NULL));
for(i=0;i<l;i++)
for(j=0;j<c;j++)
T[i][j]=(rand() % (Max - Min + 1)) + Min;

// question d)
for(i=0;i<l;i++)
{
X[i]=T[i][0];
for(j=1;j<c;j++)
{
if(X[i]>T[i][j])
X[i]=T[i][j];
}
}
}

// question e)
void tri_insertion(float X[150], int l)
{
int i, j, tmp;
for (i = 1; i < l; i++)
{
tmp = X[i];
for (j = i; j > 0 && X[j - 1] > tmp; j--) X[j] = X[j - 1];
X[j] = tmp;
}
}
UNIVERSITE MOHAMMED V de Rabat Contrôle final Juin 2018
Faculté des Sciences Programmation C SMP4 - B
Code Nom Prénom

Exercice 1: Que vont afficher les programmes suivants: (répondre en face des questions) 8 pts
main() (1pt)
{ char a=12, b=5 ; 8
printf ("%d", 2*a/b+4); }
-----------------------------------------------------------------------------------------------------------------------
main() (1pt)
{ int a = 8, i = 1; 9
for ( ; i< a ; i+=3) i++;
printf ("%d\n" ,i);}
-----------------------------------------------------------------------------------------------------------------------
main() (1pt)
{ int n = 9, i=8 ; 72 + 90 +
while ( i<=n )
printf ("%d + " ,i* i++ ) ; }
-----------------------------------------------------------------------------------------------------------------------
main() (1pt) 1.333
{ float a=3, b=4; int c=12;
printf (" %.3f ", !a?a*=c:b/a);}
-----------------------------------------------------------------------------------------------------------------------
#define Faux 0 (1pt)
main()
{ int n=9, i =-2 , stop = Faux;
do {
9 10
if ( n == 11)
stop = i ;
else
printf ("%d\t" , n++);
}while ( !stop ); }
-----------------------------------------------------------------------------------------------------------------------
main() (1pt)
{ double cube (double x, double y );
int n=8; long p= 3 ;
p=cube (n, p) ; Le cube de 8 est 512
printf ("Le cube de %d est %ld", n, p) ;}

double cube (double a, double b)


{ return a * a * a; }
-----------------------------------------------------------------------------------------------------------------------
main() (2pts)
{ int t[] = {12,23, 34, 45, 56, 67};
int *p = t,*q; 45
p+=3 ; q=p-2; 11 , 34
*(t+4) = t[3];
printf(" %d\n%d , %d", *p, *q/2, t[p-q]);}
Exercice 2:
a) Ecrire un programme en C qui déclare une matrice A de type entier de dimensions maximales 50 lignes
et 35 colonnes en utilisant des directives du préprocesseur 2pts
b) Les dimensions N et M de la matrice A sont lues au clavier avec les vérifications nécessaires 2pts
c) Puis remplir la matrice A par des valeurs aléatoires comprises entre -50 et 50. 2pts
d) V est un tableau de réels de N lignes. Remplir le tableau V par le maximum de chaque ligne de A. 3pts
e) En utilisant le tri par sélection, donnez une fonction qui trie le tableau V par ordre croissant. 3pts

int main()
{
// question a)
int T[50][35],i,j,l,c;
int Max=50,Min=-50;
float X[50];

// question b)
do
{
printf("\ndonnez le nombre de lignes < 150 : ");
scanf("%d",&l);
}while(l<2||l>50);
do
{
printf("\ndonnez le nombre de colonnes < 250 : ");
scanf("%d",&c);
}while(c<2||c>35);

// question c)
srand(time(NULL));
for(i=0;i<l;i++)
for(j=0;j<c;j++)
T[i][j]=(rand() % (Max - Min + 1)) + Min;

// question d)
for(i=0;i<l;i++)
{
X[i]=T[i][0];
for(j=1;j<c;j++)
{
if(X[i]>T[i][j])
X[i]=T[i][j];
}
}
}

// question e)
void tri_insertion(float X[50], int l)
{
int i, j, tmp;
for (i = 1; i < l; i++)
{
tmp = X[i];
for (j = i; j > 0 && X[j - 1] > tmp; j--) X[j] = X[j - 1];
X[j] = tmp;
}
}

Vous aimerez peut-être aussi