Vous êtes sur la page 1sur 6

Université Sidi Mohamed Ben Abdellah Année universitaire : 2018 / 2019

Faculté des Sciences Dhar El Mahraz Fès Filière : SMA


Semestre : 3
Session : Automne

Informatique 3
Contrôle de fin de semestre :
(Durée : 1h 30)

Question de cours : (3pts)


Soient la déclaration des 2 variables :
int A=5 ;
int *ptr= &A ;

Donner la différence entre les instructions C suivantes :


1. (A++)
2. *(ptr ++)
3. (*ptr)++

Exercice 1 : (4pts)
Ecrire un programme en C pour :
 Demander à l’utilisateur de saisir les éléments d’un tableau de 9 éléments
 Faire le tri croissant du tableau
 Calculer et afficher la moyenne des éléments du tableau
 Calculer et afficher la somme des éléments du tableau

Exercice 2 : (3pts)
Ecrire une fonction C, nommée « toAscii » qui permet de retourner le code ASCII d’un
caractère passé en argument.

Dans la fonction « main », écrire les instructions pour demander à l’utilisateur de saisir un
caractère et d’afficher son code ASCII.

Prof. SABRI My Abdelouahed 1/6


Exercice 3 : (6pts)
Soit l’instruction C pour la déclaration de 4 variables :
int A, B, C, *P, *Q;

Le tableau suivant représente les cases mémoires des variables :


Variable A B C P Q
Adresse Mémoire 6487628 6487624 6487620 6487608 6487600

Compléter le tableau suivant :


A B C P Q
A=5
B=10
A=B++
C=--A
P=&A
Q=&B
*Q=*P + 2
Q--
*Q=100

Exercice 4 : (4pts)
Ecrire un programme en C qui demande de saisir une phrase ne dépassant pas 255 caractères.
Le programme va afficher par la suite la même phrase mais avec les premières lettres des
mots en majuscule et le reste en minuscule.

Exemple :
Entrer une phrase ne dépassant pas 255 caractères.
JE pasSe le contrôle final du moduLe INFO3
Votre phrase avec la première lettre en majuscule est :
Je Passe Le Contrôle Final Du Module Info3

Bon courage

Prof. SABRI My Abdelouahed 2/6


Université Sidi Mohamed Ben Abdellah Année universitaire : 2018 / 2019
Faculté des Sciences Dhar El Mahraz Fès Filière : SMA
Semestre : 3
Session : Automne

Informatique 3

Corrigé du contrôle de fin de semestre :


(Durée : 1h 30)

Question de cours : (3pts)


Soient la déclaration des 2 variables :
int A=5 ;
int *ptr= &A ;

Donner la différence entre les instructions C suivantes :


1. (A++) :C’est une post-incrémentation de la variable A A= A+1
2. *(ptr ++) : c’est équivalent à :
*(ptr) et après ptr++ qui va déplacée le pointeur pour pointée sur la case mémoire juste à
côté de la case de A.
Soit l’exemple suivant :
int x=5;
int *ptr= &x;
int y=55;
printf("%d\t", *(ptr++)); // va afficher 5 ; c’est la valeur de x
printf("%d", *(ptr)); // va afficher 55 ; c’est la valeur de y car ptr++ a déplacée le pointeur
pour pointer sur y
3. (*ptr)++ : C’est une post-incrémentation de la variable sur laquelle point le pointeur ptr ;
qui est A A= A+1

Prof. SABRI My Abdelouahed 3/6


Exercice 1 : (4pts)
#include "stdio.h"
int main()
{
int tab[9]; // initialisation
int temp; // à utiliser pour le tri
int som=0; // pour la somme
float moy; // pour la moyenne
// 1- Demander à l'utilisateur de saisir les éléments d'un tableau de 9 éléments
for (int i=0; i<9; i++)
{
printf("Entrer l'élément numéro %d: ", i+1);
scanf("%d",&tab[i]) ;
}
// 2- Faire le tri croissant du tableau
for (int i=0; i<9; i++)
{
for (int j=i+1; j<9; j++)
{
if (tab[i]>tab[j])
{
temp=tab[i];
tab[i]=tab[j];
tab[j]=temp;
}
}
}
// 3- Calculer et afficher la somme des éléments du tableau
for (int i=0; i<9; i++)
{
som=som+tab[i];
}
// 4- Calculer et afficher la moyenne des éléments du tableau
moy=(float)som/9; // Il faut faire le conversion explicite pour forcer le type float.
// Affichage: n'est pas demandé dans l'exercice
for (int i=0; i<9; i++)
printf("%d\t", tab[i]);
printf("\nLa Somme est: %d", som);
printf("\nLa moyenne est: %.2f", moy);
return 0;
}

Prof. SABRI My Abdelouahed 4/6


Exercice 2 : (3pts)
#include "stdio.h"
// Fonction " toAscii " qui retourne le code ASCII d'un caractère passé en argument.
int toAscii(char ch)
{
return (int) ch;
}
int main()
{
char c;
int asc;
// demander à l'utilisateur de saisir un caractère
printf("Entrer un caractère: ");
scanf ("%c",&c);
asc=toAscii(c);
// Afficher le caractère et son code ASCII
printf("le code Ascii de %c est: %d", c, asc);
return 0;
}

Exercice 3 : (6pts)
Soit l’instruction C pour la déclaration de 4 variables :
int A, B, C, *P, *Q;

Le tableau suivant représente les cases mémoires des variables :


Variable A B C P Q
Adresse Mémoire 6487628 6487624 6487620 6487608 6487600

Compléter le tableau suivant :


A B C P Q
A=5
5 10 / / /
B=10
A=B++
9 11 9 / /
C=--A
P=&A
9 11 9 &A &B
Q=&B
*Q=*P + 2 9 11 9 &A &B
Q--
9 11 100 &A &C
*Q=100

Prof. SABRI My Abdelouahed 5/6


Exercice 4 : (4pts)
#include "stdio.h"
#include "ctype.h" // pour utiliser les fonctions toupper et tolower
int main()
{
char txt[255];
printf("Entrer une phrase ne dépassant pas 255 caractères\n");
gets(txt); // il ne faut pas utiliser scanf car la phrase peut contenir des espaces
txt[0]=toupper(txt[0]); // il faut forcer la première lettre en majuscule
// Boucler sur tous les caractères de la phrase
for (int i=1; txt[i]!='\0'; i++)
{
// Si il y a un espace avant le caractère courant, le mettre en majuscule et sinon en minuscule
if (txt[i-1] == ' ')
{
txt[i]=toupper(txt[i]);
}
Else
{
txt[i]=tolower(txt[i]);
}
}
puts("Votre phrase avec la première lettre en majuscule est :");
puts(txt);
}

Prof. SABRI My Abdelouahed 6/6