Vous êtes sur la page 1sur 8

Exercice 1: L'utilisateur saisit un caractre, le programme teste s'il s'agit d'une lettre majuscule, si oui il renvoie cette lettre

en minuscule, sinon il renvoie un message d'erreur. Exercice 2: Saisir Utiliser Quelle un entier, une boucle while grande valeur possible de calculer n, puis si n est dclar int, n! une boucle for. puis unsigned ?

est

la

plus

Exercice 3: Rsoudre

Exercice 4: Saisir une Utiliser Exercice 5: La fonction kbhit appartient la bibliothque conio.h. Une fonction quivalente peut avecd'autres compilateurs. La fonction kbhit teste si un caractre a t frapp au Tant que ce n'est pas vrai kbhit renvoie 0 (ceci signifie que la valeur de la fonction kbhit est 0). Exemple: while(kbhit() == 0) /*tant { ..... } Cette criture est quivalent : while(!kbhit()); { ..... } /* tant qu'aucun caractre n'a t frapp excuter la boucle*/ exister clavier. suite de caractres, les compter et afficher proprits le nombre de lettres du e et d'espaces. tampon.

que kbhit

est

faux,

excuter

la boucle */

crire un programme qui affiche le carr des entiers 1, 2, 3 ......, toutes les 500 ms tant qu'aucuncaractre n'a t frapp au clavier. Gnrer la temporisation l'aide d'une boucle for et d'un dcompteur. -------------------------------------------------------------------------------------------------------

Correction
------------------------------------------------------------------------------------------------------Exercice 1 #include #include<conio.h> void { char printf("ENTRER c if((c>='A') && else printf("CE printf("POUR getch(); } : <stdio.h> main() c; LETTRE:"); = getchar(); (c<='Z')) printf("CETTE LETTRE EN MINUSCULE: %c\n",c); N'EST PAS UNE LETTRE MAJUSCULE\n"); CONTINUER FRAPPER UNE TOUCHE "); UNE

Exercice 2 #include #include void { int printf("ENTRER for printf("\nn printf("\nPOUR getch(); }

: <stdio.h> <conio.h> main() n,i,fac= UN (i=1;i<=n;i++) = %d CONTINUER fac= n! FRAPPER ENTIER: fac = UNE 1; ");scanf("%d",&n); * i; %d",n,fac); TOUCHE");

Les entiers n n unsigned: Exercice 3

sont int: n!

des n!

nombres maximum

de maximum= =

32

bits: 12! 12! :

#include <stdio.h> #include <conio.h> #include <math.h>/* contient la fonction racine */ void main() { float a,b,c,delta,x1,x2; /* saisie de A,B,C */ printf("\t\t\tRESOLUTION DE L'EQUATION DU SECOND DEGRE\n"); printf("\t\t\t 2\n"); printf("\t\t\t AX +BX+C=0\n\n\n"); printf("SAISIR A B C SEPARES PAR RETURN\n"); printf("A = ");scanf("%f",&a); printf("B = ");scanf("%f",&b); printf("C = ");scanf("%f",&c); /* debut du calcul */ /* cas particuliers */ if((a==0)&&(b==0)&&(c==0))printf("INFINITE DE SOLUTIONS\n"); if((a==0)&&(b==0)&&(c!=0))printf("PAS DE SOLUTIONS\n"); if((a==0)&&(b!=0))printf("UNE SOLUTION: X= %f\n",-c/b); /*cas general */ if(a!=0) { delta = b*b-4*a*c; printf("DELTA= %f\n",delta); if(delta<0)printf("DELTA NEGATIF PAS DE SOLUTION\n"); else { if(delta==0)printf("DELTA NUL, UNE SOLUTION X= %f\n",-b/2/a); else{ x1= (-b+sqrt(delta))/2/a; x2= (-b-sqrt(delta))/2/a; printf("DELTA POSITIF DEUX SOLUTIONS\n"); printf("X1= %f X2= %f\n",x1,x2); } } }

/* printf("\n\nPOUR getch(); } Exercice 4 #include #include void { char printf("ENTRER

calculs CONTINUER

termines FRAPPER UNE

*/ TOUCHE");

: <stdio.h> <conio.h> main() c,compt_espace= PHRASE:\n");/* l'utilisateur saisit /* /* lors en /* /* 0,compt_e= totalite de 0; */

UNE

la

sa

phrase

while((c=getchar())!='\n') { if(c=='e')compt_e++;

du 1er passage, getchar ne prend */ compte que le 1er caractere */ /* les autres sont ranges dans le tampon */ et recuperes par getchar lors */ des autres passages */ if(c==' ')compt_espace++; } e: D'ESPACE: FRAPPER UNE %d\n",compt_e); %d\n",compt_espace); TOUCHE ");

printf("NOMBRE printf("NOMBRE printf("POUR getch(); } Exercice 5 #include #include void { int float printf("POUR do

DE SORTIR

: <stdio.h> <conio.h> main() i SORTIR DE CE PROGRAMME = FRAPPER UNE 0; x,tempo=5000000; TOUCHE ...\n"); { %d\n",i,i*i); for(x=tempo;x>0;x--); i++; }

printf("i

%d

i*i

while(kbhit()==0);

/* on peut aussi crire while(!kbhit()); */

Exercice I
crire un programme qui affiche les nombres de 1 10. crire un programme qui affiche les nombres de 20 1 de trois en trois. Exemple :

20 19 18 17 16 15 14 13 12 ...

(faire deux fois l'exercice : avec "for" et avec "while").

Exercice II
crire un programme qui calcule la somme des entiers de 1 100.

Exercice III
Mme programme que prcdemment, mais cette fois-ci l'utilisateur indique la limite : exemple de 1 250.

Exercice IV
crire un programme qui saisit un entier et qui l'affiche l'envers. Par exemple, l'utilisateur saisit 123456 et le programme affiche 654321. Pour cela il faudra utiliser la division et le modulo. Rappel : 153%10 = 3 et 153/10 = 15

Exercice V
Programme qui demande l'utilisateur de taper un caractre. Celui-ci a trois essais. Si le caractre tap est un '0' on affiche "gagn", et on arrte. Si au bout de 3 essais, l'utilisateur n'a pas toujours tap de "0", on sort en affichant "perdu".

Exercice VI
crire un programme qui saisit deux nombres entiers positifs et calcule le premier la puissance du second. Il affiche le rsultat.
Ex1
#include <stdio.h> /** * affiche les nombres de 1 a 10 */ int main(void) { int i; // compteur de boucle for (i = 1; i<=10; i++) { printf("%d\n", i); } return 0; }

Ex2 #include <stdio.h> /** * for */ void triple_for(void) { int i = 0; // compteur de boucle int c = 1; // compteur de colonne for (i=20; i>=1; i--, c++) { printf("%2d ", i); // affiche le nombre if (c == 3) { printf("\n"); // change de ligne c=0; // c++ dans le for ajoutera 1 } } } /** * while */ void triple_while(void) { int i = 20; // variable de boucle int c = 1; // colonne while( i >= 1 ) { printf("%2d ", i); if (c == 3) { printf("\n"); c = 0; } c++; i--; } } /** * affiche les nombres de 20 a 1, trois par trois */ int main(void) { printf("boucle for:\n"); triple_for(); printf("\nboucle while:\n"); triple_while(); return 0; }

#include <stdio.h> /** * affiche la somme de 1 a 100 */ int main(void) { int i; // compteur de boucle int sum = 0;

// ceci est la forme non optimis for (i = 1; i<=100; i++) { sum += i; } printf("Somme de 1 a 100: %d\n", sum); // optimis: printf("Somme de 1 a 100 = 100*(100+1)/2 = %d\n", 100/2*(100+1)); return 0; } #include <stdio.h> #include <stdlib.h> /* pour exit */ /** * affiche la somme de 1 a n */ int main(int argc, char * argv[]) { int i; /* compteur de boucle */ long sum = 0; int n = 0; /* demander le numero a l'usager en ligne de commande */ if (argc > 1) { n = atoi(argv[1]); /* conversion ascii to char */ if (n < 1) { fprintf(stderr, "Usage: %s n\n", argv[0]); fprintf(stderr, "n doit etre plus grand que 0\n"); exit(-1); } } else { fprintf(stderr, "Usage: %s n\n", argv[0]); exit(-1); } /* ceci est la forme non optimise */ for (i = 1; i<=n; i++) { sum += i; } printf("Somme de 1 a %d: %ld\n", n, sum); /* optimise */ if ( n & 1 ) { /* nombre impair */ printf("Somme de 1 a %d = (%d+1)/2*%d = %ld\n", n, n, n, (long)(n+1)/2*n); } else { /* nombre pair */ printf("Somme de 1 a %d = %d/2*(%d+1) = %ld\n", n, n, n, (long)n/2*(n+1)); } return 0; }

Exj #include <stdio.h>

#include <stdlib.h> /* exit */ /** * Entier a l'envers */ int main(int argc, char * argv[]) { int n; /* nombre */ int reste = 0; /* reste */ /* demander le numero a l'usager en ligne de commande */ if (argc > 1) { n = atoi(argv[1]); /* conversion ascii to char */ if (n < 0) { fprintf(stderr, "Usage: %s n\n", argv[0]); fprintf(stderr, "n doit etre plus grand que -1\n"); exit(-1); } } else { fprintf(stderr, "Usage: %s n\n", argv[0]); exit(-1); } /* boucle */ while (n > 9) { printf ("%d", n%10); n = n/10; } printf("%d\n", n); return 0; }

Exj
#include <stdio.h> /** * jeux du 0 * l'utilisateur doit taper 0 pour gagner et arreter le jeux * sinon il pert */ int main(void) { char i = 0; /* compteur */ char ch[2]; /* caractere recu */ for (i=0; i<3; i++) { printf("Entrer un caractere: "); fgets(ch,2,stdin); getc(stdin); /* get the \n caracter */ if (ch[0] == '0') { printf("Vous avez gagn\n"); break; /* termine la boucle */ } else if (i == 2) { printf("Vous avez perdu\n"); } } return 0;