Documente Academic
Documente Profesional
Documente Cultură
IUP2
C
Annee 2004-2005
TD n1 - Correction
Structures de controle
resultat = additionne(add1,add2) ;
printf("%d plus %d font %d!\n", add1 , add2 , resultat) ;
return 0 ;
}
Exercice 2 Ecrire un programme qui permet de saisir une annee et calcule si cette annee est
bissextile. On rappelle quune annee est bissextile si cest un multiple de 4 et que ses deux
derniers chiffres sont differents de 0, ou si elle est divisible par 400.
Correction :
#include <stdio.h>
int main(void){
int annee ;
printf("Donnez moi une annee:\n") ;
scanf("%d",&annee) ;
if ( ((annee%4 == 0) && (annee%100 != 0)) || (annee%400 == 0) )
printf("Annee bissextile!") ;
else
printf("Annee non bissextile") ;
return 0 ;
}
Exercice 5 Ecrire un programme qui implemente le jeu Cest plus, Cest moins qui consiste
`a cacher un nombre quun utilisateur devra trouvrer. Le programme indique `a chaque reponse
si le nombre cache par le programme est plus petit ou plus grand que le nombre propose. Vous
utiliserez une boucle do ... while
Correction :
#include <stdio.h>
int main(void){
int secret = 12 ;
int essai ;
do{
printf("Essayez de deviner le nombre secret:\n") ;
scanf("%d",&essai) ;
if (essai == secret)
printf("Gagne!\n") ;
else
if (essai < secret)
printf("Cest plus!\n") ;
else
printf("Cest moins!\n") ;
} while(essai != secret) ;
return 0 ;
}
Exercice 6 Ecrire une fonction triangle affichant un triangle detoiles de hauteur n avec : 1
symbole * sur la 1-i`ere ligne, 2 symboles * sur la 2-i`eme ligne, etc. Les etoiles seront diposees
comme ceci :
*
**
***
****
*****
Testez cette fonction dans un programme.
Les derniers exercices sont plus difficiles.
Exercice 7 Ecrire `a present une fonction triangle centre(int n) affichant un triangle detoiles
de hauteur n dont la pointe sera centree, comme ceci :
*
***
*****
*******
*********
Testez cette fonction dans un programme.
Correction :
#include <stdio.h>
void triangle(int n){
int i,j ;
for(i = 1 ; i <= n ; i++){
for(j = 0 ; j < i ; j++){
printf("*") ;
}
printf("\n") ;
}
}
void triangle_centre(int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < (n - 1) - i; j++)
printf(" ");
for (j = 0; j < 2*i + 1; j++)
printf("*");
printf("\n");
}
}
int main(void){
int saisie ;
printf("Entrez un entier:\n") ;
scanf("%d",&saisie) ;
triangle(saisie) ;
triangle_centre(saisie) ;
return 0 ;
}
Exercice 8 Ecrire un programme qui trie un tableau de taille 10, saisi par lutilisateur.
On utilisera pour cela lalgorithme du tri par selection qui consiste `a chercher dans le tableau,
`a partir de la position n, le plus petit element du tableau et de lechanger avec lelement `a la
position n.
Ainsi, on cherche le plus petit element `a partir de la position 0, et on lechange avec celui de
la position 0, puis on cherche le plus petit element `a partir de la position 1 et on lechange avec
celui de la position 1, etc...
Correction :
#include <stdio.h>
int main(void){
int tab[10] ;
int saisie ;
int i,j ;
int echange ;
int minimum ;
int indice_minimum ;
for( i = 0 ; i< 10 ; i++ ){
printf("Donnez moi un entier:\n") ;
scanf("%d",&saisie) ;
tab[i] = saisie ;
}
for( i = 0 ; i < 10 ; i++){
minimum = tab[i] ;
indice_minimum = i ;
for( j = i ; j < 10 ; j++){
if (minimum > tab[j]){
minimum = tab[j] ;
indice_minimum = j ;
}
}
echange = tab[indice_minimum] ;
tab[indice_minimum] = tab[i] ;
tab[i] = echange ;
}
for( i = 0 ; i< 10 ; i++ )
printf("%d",tab[i]) ;
}
Ecrire un programme qui affiche le triangle numerique ci-dessous en utilisant des boucles
imbriquees :
1
232
34543
4567654
567898765
67890109876
7890123210987
890123454321098
90123456765432109
0123456789876543210
Correction :
#include <stdio.h>
main(){
int i,j ;
for( i = 1 ; i <= 10 ; i++){
for( j = i+1 ; j <= 10 ; j++)
printf(" ") ;
for( j = i ; j < (2 * i-1) ; j++)
printf("%d",j%10) ;
for(; j>=i ; j--)
printf("%d",j%10) ;
printf("\n") ;
}
}