Ecole Supérieure de Technologie et
d’Informatique
____*____
Université 7 Novembre à Carthage
A.U 2010/2011
____*____
Devoir Surveillé
Matière : PROGRAMMATION 1
Enseignants : W. Yaiche Elleuch, S. Amara, H. Fkaier
Filière / Classe : Informatique Appliquée (1ère année)
Date : 10 novembre 2010
Durée : 1h30
Documents : non autorisés
CIN : …………………… Salle :……………….
Nom : …………………… Prénom :.……………………..
Section : …………..
RÉPONDRE SUR CETTE FEUILLE
Exercice 1 : ( 6 pts)
Soit le programme suivant.
#include<stdio.h>
void main()
{
int i,j,k;
for (i=1;i<3; i++)
for (j=1;j<3; j++)
printf("%d \n", i+j);
for (k=1; k<3; k++)
printf("%d \n", i+j+k);
}
1 pts
Si on l’exécute, qu’est ce qu’il affiche
2
3
3
Publicité
4
7
8
1 pts
1 pts
1
Remplacer for par while
#include<stdio.h>
void main()
{
int i,j,k;
i=1;
while (i<3)
{
j=1;
while (j<3)
{
printf("%d \n", i+j);
j++;
2 pts
Les 2 whiles doivent être
correctement imbriquées
}
i++;
}
k=1;
while (k<3)
{
printf("%d \n", i+j+k);
k++;
}
}
1 pts
(7 pts)
Publicité
Exercice 2
Ecrire un programme qui lit un texte se terminant par #, et affiche le nombre de mots
contenant au moins 3 voyelles majuscules (A, E, I, O, U, Y), et au moins 5 lettres majuscules.
Les mots sont séparés par un ou plusieurs séparateurs (‘ ‘ | ‘,’ | ‘ ;’ | ‘.’).
Exemple
azeEUYAgf,,, AEIML EUYGFd#
Le nombre de mots est 2
#include<stdio.h>
void main()
{
char c, preced=' '; int nb_voy=0, nb_mots=0, nb_maj=0;
while( (c=getchar())!='#')
{
0.5 pts
if (c==' ' || c==',' || c==';'|| c=='.')
{
0.5 pts
if (preced !=' ' && preced!= ',' && preced !=';' && preced !='\n')
if(nb_voy>=3 && nb_maj>=5) nb_mots++;
2 pts
2
}
else
{
if(c=='A' || c=='E' || c=='I'|| c=='O' || c=='U' || c=='Y')
nb_voy++;
1 pts
if(c>='A' && c<='Z') nb_maj++;
1 pts
}
preced=c;
0.5 pts
}
if(nb_voy>=3 && nb_maj>=5) nb_mots++;
Publicité
1 pts
printf("Le nombre de mots est %d", nb_mots);
0.5 pts
}
Exercice 3
(7 pts)
Ecrire un programme qui remplit un tableau tab1 de n éléments (n doit être pair), et le remplit
par des entiers qui doivent être compris entre 0 et 10 (inclus).
Utiliser do…while pour faire le contrôle sur n et sur les entiers.
Le programme remplit un deuxième tableau tab2 à partir de tab1, et ce en additionnant chaque
deux éléments consécutifs de tab1 ensemble (exemple : 5+3=8 ; 2+9=11 ; 4+1=5 ; etc).
Afficher tab2.
Exemple :
tab1 :
3
9
2
1
7
4
6
5
9
8
tab2 :
8
11
5
13
17
3
#include<stdio.h>
void main()
{
Publicité
int tab1[100],tab2[50],i=0,j=0,n;
1 pts
do
{
printf("saisir le nombre d'éléments");
scanf("%d",&n);
}
while (n%2!=0);
1 pts
printf("\n remplissage de tab 1 \n"); // une solution parmi d’autres
do
{
scanf("%d", &tab1[i]);
if(tab1[i]>=0 && tab1[i]<=10) i++;
2 pts
}
while(i<n);
for(i=0; i<n-1; i=i+2)
{
tab2[j]=tab1[i]+tab1[i+1];
j++;
}
printf("\n affichage de tab 2 \n");
2 pts
for(j=0; j<n/2; j++)
printf("\n %d ", tab2[j]);
1 pts
}
4