Vous êtes sur la page 1sur 4

S.E.T.P – S.I.

C S1-2015

Algorithmique et Programmation C
DS N° 1

Exercice 1 : Taxe hôtelière (4.5 pts)


Ecrire un programme qui calcule la taxe appliquée à une facture d’hôtel. Le programme saisit le
montant exprimé en dinars de la facture en hors taxe (HT) ainsi que la catégorie de l’hôtel (1, 2, 3, 4
ou 5 étoiles).

Comme résultat, le programme renvoie le montant total de la taxe calculée sur cette base :

 Pour les hôtels à 1 ou 2*, la taxe est nulle.


 Pour les hôtels de catégorie 3*, la taxe est de 2% du montant de la facture (en HT).
 La taxe est de 3% pour les hôtels de catégorie 4 ou 5 étoiles.

Utiliser le branchement à choix multiple (switch) pour écrire ce programme.

Utiliser le format à 3 chiffres après la virgule pour l’affichage du montant de la taxe exprimé en
dinars.

Ne pas oublier de faire les contrôles nécessaires lors de la saisie de la catégorie de l’hôtel.

Exercice 2 : Parcours en accordéon (4.5 pts)


Ecrire un programme qui affiche un parcours en accordéon d'un tableau d’entiers Tab à deux
dimensions MxN. Plus précisément, on parcourt la première ligne de gauche à droite puis la seconde
de droite à gauche et ainsi de suite en alternant le sens de parcours des lignes. Pour chaque ligne, on
affiche les éléments du tableau dans l’ordre de parcours.

Exemple :

Pour le tableau suivant,

0 1 2 3 4 5

6 7 8 9 10 11

12 13 14 15 16 17

18 19 20 21 22 23

On doit obtenir l'affichage suivant :

0, 1, 2, 3, 4, 5, 11, 10, 9, 8, 7, 6, 12, 13, 14, 15, 16, 17, 23, 22, 21, 20, 19, 18,

1 Responsable Cours & TD: Mme I. Msadaa


S.E.T.P – S.I.C S1-2015

Exercice 3 : Pointeurs (3.5 pts)


Soit le programme suivant :

Sachant que les entiers A, B et C occupent les adresses mémoire 0028FF16, 0028FF14 et 0028FF12
respectivement, compléter les cases vides du tableau ci-dessous avec les valeurs de chacune des
variables A, B, C , P1 et P2 après exécution de chaque instruction.

A B C P1 P2
short A = 1; 1 -- -- -- --
short B = 2; 1 2 -- -- --
short C = 3; 1 2 3 -- --
P1=&A; 1 2 3 --
P2=&C;
*P1=*P2+1;
P1=P2;
P2=&B;
*P1-=*P2;
++*P2;
*P1*=*P2;
A=++*P2**P1;
P1=&A;
*P1/=(*P2)++;
P1 += 2;

2 Responsable Cours & TD: Mme I. Msadaa


S.E.T.P – S.I.C S1-2015

Exercice 4 : Triangle étoilé (3.5 pts)


Ecrire un programme qui lit un entier n entré par l’utilisateur et affiche un triangle isocèle de base
2n − 1 et de hauteur n. Par exemple, pour n=4, le triangle s’affiche comme suit :

**

***

****

***

**

Exercice 5 : Questions à choix multiples (3 pts)


5.1.1 Soit le tableau suivant :
int tab[3][6]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18} ;
Quelle est la valeur de tab[2][3]. Cocher la bonne case.
12 15 9
16 10 6
5.1.2 Donner l’expression permettant d’afficher le contenu de l’élément de tab ayant pour valeur 14
en utilisant les pointeurs.
…………………………………………………………………………………………………………………………………………………………

5.2.1 Soit la chaîne de caractères : char Ch[ ] = ″devoir ″ ; quelle est la taille de l’espace mémoire,
exprimé en bits, de cette chaîne.
42 6 8
48 7 56
5.2.2 Quelle est la valeur de Ch[6] ? ……………………………………………………………………………………………………

5.3.1 Soit l’instruction suivante :


z = (a > b ? a : b) + (a <= b ? a : b) ;
Quelle est la valeur de z pour a = 13 et b = 4 ?
13 8 17
4 26 9
5.3.2 Simplifier l’instruction ci-dessus. …………………………………………………………………………………………………

3 Responsable Cours & TD: Mme I. Msadaa


S.E.T.P – S.I.C S1-2015

5.4.1 Soit le bloc d’instructions suivant :


for(i=0 ; i<5 ; i++)
{
if(i == 3)
continue;
else
printf(″%d,″, i);
}
Quel résultat obtient-on à l’exécution de ce code ? Cocher la bonne case.
0, 1, 2, 4, 0, 1, 2, 3, 4, 5,
0, 1, 2, 5, 0, 1, 2,
5.4.2 Quel aurait été le résultat si à la place de continue ; on aurait eu break ;
…………………………………………………………………………………………………………………………………………………………....

4 Responsable Cours & TD: Mme I. Msadaa

Vous aimerez peut-être aussi