Université CADI AYYAD Année universitaire 2011/2012
Faculté des Sciences Semlalia
Département de Physique
Marrakech
Contrôle de Rattrapage SMP S4
Programmation
Durée 2h
Exercice 1.1 :
Soit le programme suivant :
main()
{
int i;
for(i=5;i<=9;i++)
printf("bonjour\n");
printf("%d",i*i);
}
Exécutez-le à la main et écrivez sur la feuille d’examen les affichages attendus.
Solution
bonjour
bonjour
bonjour
bonjour
bonjour
100
Exercice 1.2:
Soit le programme suivant:
main()
{
int i,N=5;
do{
for(i=0;i<=N; i++)printf("*");
N--;
printf("\n");
}while(N>=0);
}
[Link] page facebook
a. Donnez sur la feuille d’examen l’affichage produit à l’exécution de ce code.
b. Sans modifier le résultat produit par le programme, Remplacer l’instruction “do
while” par l’instruction ″for″ et l’instruction ″for″ par ″do while″, réécrire ce
programme.
Solution :
******
*****
****
***
**
*
Exercice 1.3:
Etant donné le programme suivant
main()
{
char t[]={'i','n','f','o','r','m','a','t','i','q','u','e'};
int i,k,N=12;
for(i=0;i<N;i++) printf("%c",t[i]);
printf("\n");
for(i=0;i<N;i++)
{
switch(t[i])
{
case 'a':k=0;break;
case 'e':k=0;break;
case 'i':k=0;break;
case 'o':k=0;break;
case 'u':k=0;break;
case 'y':k=0;break;
default:k=1;
}
if(k) printf("%c",t[i]);
}
}
Ecrire sur la feuille l’affichage produit à l’exécution de ce programme.
Solution
informatique
nfrmtq
Exercice 2:
[Link] page facebook
On veut écrire un programme qui réalise la somme des chiffres qui composent un nombre N.
Par exemple : Pour N= 563, on calcule la somme 5+6+3 soit un total égal à 14. On doit
prendre en considération que si la somme est strictement supérieure à 9, on fait encore la
somme des chiffres qui compose ce total. Dans l’exemple, on un total de 14, alors on fait 1+4
soit 5. C’est le résultat final.
Ecrire un programme qui :
a- Lit un nombre entier N au clavier. De préférence supérieur à 100.
b- Trouver le moyen d’isoler les chiffres qui composent N en utilisant les operateurs
arithmétiques adaptés.
c- Faire la somme des chiffres. Si cette somme est supérieure à 9 recommencer l’étape
précédente jusqu’à ce que la somme soit inferieure à 10.
d- Dans le cas où cette somme est égale à 9, 6 ou 3 alors afficher que N est multiple de 3.
Solution :
Soit N le nombre à décomposer (563 par exemple). N est déclaré de type int. Soit
Som(initialement nul) la somme des éléments de N(dans le cas de N=563 on a : Som=5+6+3)
Etape 1 : N%10 donne le reste R de la division de N par 10. Pour 563 ça donne 3 (colonne
des unités). On ajoute R à la som
Etape 2 : N/10 donne la division entière de N par 10. Pour 563 ça donne 56. On affecte à N
cette nouvelle valeur N=N/10 et on recommence l’étape 1 tant que N est supérieur à 0.
A la fin de chaque étape 1 on stock R dans la somme, on doit vérifier si som n’est pas
supérieure strictement à 9. Si som est supérieure à 9 alors on doit la remplacer par :
som=som/10+som%10 ou som=som-9
#include<stdio.h>
main()
{
int N, som = 0, N_mem;
scanf("%d", &N);
N_mem = N;
do
{
som = som + N%10;
if(som>9) som=som/10+som%10;
///if (som>9) som = som - 9;
N = N/10;
}while(N);
printf("som=%d",som);
if(som==3||som==6||som==9)printf("\n%d est multiple de
trois",N_mem);
}
[Link] page facebook