exercise corrige languge c.docx
TRANSCRIPT
-
7/24/2019 exercise corrige languge c.docx
1/35
exercise corrigeExercice 1 :
Ecrire un programme en langage C qui permute et affiche les valeurs de trois variables A, B, C de type entiA ! B , B ! C , C ! A
"olution :#include $stdio%h!main&'(int A, B, C, A)*E+
printf&)ntroduise- trois nombres &A, B, C' : '+scanf&.d .d .d, /A, /B, /C'+
0 Affichage 2 l3aide de tabulations 0printf&A .d4tB .d4tC .d4n, A, B, C'+A)*EA+AC+CB+BA)*E+
printf&A .d4tB .d4tC .d4n, A, B, C'+return 5+6
Exercice 7 :
Ecrire un programme en langage C qui affiche le quotient et le reste de la division enti8re de deux nombres
"olution :
#include $stdio%h!main&'(int A, B+
printf&)ntroduise- deux nombres entiers : '+scanf&.d .d, /A, /B'+printf&*ivision entiere : .d4n, A0B'+printf&9este : .d4n, A.B'+printf&uotient rationnel : .f4n, &float'A0B'+return 5+6
Exercice ; :Ecrire un programme en langage C qui affiche la rsistance quivalente 2 trois rsistances 91, 97, 9; &type
< si les rsistances sont branches en srie:9sr 91=97=9;
-
7/24/2019 exercise corrige languge c.docx
2/35
< si les rsistances sont branches en parall8le:9par &91979;'0&9197=919;=979;'
"olution :
#include $stdio%h!main&'(double 91, 97, 9;, 99E"+
printf&)ntroduise- les valeurs pour 91, 97 et 9; : '+scanf&.lf .lf .lf, /91, /97, /9;'+99E"91=97=9;+
printf&9esistance resultante serielle : .f4n, 99E"'+99E"&91979;'0&9197=919;=979;'+
printf&9esistance resultante parallele : .f4n, 99E"'+
return 5+6
Exercice > :Ecrire un programme en langage C qui calcule et affiche l3aire d3un triangle dont il faut entrer les longueurs"7 &
-
7/24/2019 exercise corrige languge c.docx
3/35
(int A+long "F+"F 5+
printf&Entre- le premier nombre : '+scanf&.d, /A'+"F=A+
printf&Entre- le deuxi8me nombre : '+scanf&.d, /A'+"F=A+
printf&Entre- le troisi8me nombre : '+scanf&.d, /A'+"F=A+
printf&Entre- le quatri8me nombre : '+scanf&.d, /A'+
"F=A+printf&Ga somme des nombres entrs est .ld4n, "F'+return 5+6
Exercice H :
Ecrire un programme en langage C qui calcule et affiche la distance *)"I &type double' entre deux points
"olution :
#include $stdio%h!#include $math%h!main&'(int JA, KA, JB, KB+double *)"I+0 Attention: Ga chaLne de format que nous utilisons 00 s3attend 2 ce que les donnes soient spares par 00 une virgule lors de l3entre% 0
printf&Entre- les coordonnes du point A : JA,KA '+scanf&.d,.d, /JA, /KA'+
printf&Entre- les coordonnes du point B : JB,KB '+scanf&.d,.d, /JB, /KB'+*)"Isqrt&poM&JA
-
7/24/2019 exercise corrige languge c.docx
4/35
"olution :#include $stdio%h!main&'(int C+
printf&)ntroduire un caract8re suivi de 3Enter34n'+C getchar&'+
printf&Ge caract8re .c a le code A"C)) .d4n, C, C'+return 5+6
Ges structures alternatives en langage c
Exercice 1:Ecrive- un programme en langage C qui lit trois valeurs enti8res &A, B et C' au clavier et qui affiche la plusa' if < else et une variable d3aide FAJ
b' if < else if < %%% < else sans variable d3aidec' les oprateurs conditionnels et une variable d3aide FAJd' les oprateurs conditionnels sans variable d3aide
"olution :a' if < else et une variable d3aide FAJ#include $stdio%h!main&'
(int A, B, C+int FAJ+
printf&)ntroduise- trois nombres entiers :'+scanf&.i .i .i, /A, /B, /C'+if &A!B'FAJA+elseFAJB+if &C!FAJ'FAJC+
printf&Ga valeur maximale est .i4n, FAJ'+return 5+6
b' if < else if < %%% < else sans variable d3aideint A, B, C+
printf&)ntroduise- trois nombres entiers :'+scanf&.i .i .i, /A, /B, /C'+
printf&Ga valeur maximale est '+if &A!B // A!C'
printf&.i4n,A'+else if &B!C'
-
7/24/2019 exercise corrige languge c.docx
5/35
printf&.i4n,B'+else
printf&.i4n,C'+
c' oprateurs conditionnels et une variable d3aide FAJint A, B, C+int FAJ+
printf&)ntroduise- trois nombres entiers :'+scanf&.i .i .i, /A, /B, /C'+FAJ &A!B' O A : B+FAJ &FAJ!C' O FAJ : C+
printf&Ga valeur maximale est .i4n, FAJ'+
d' oprateurs conditionnels sans variable d3aideint A, B, C+
printf&)ntroduise- trois nombres entiers :'+scanf&.i .i .i, /A, /B, /C'+printf&Ga valeur maximale est .i4n,&A!&&B!C'OB:C'' O A : &&B!C'OB:C''+
Exercice 7:Pcrive- un programme en langage C qui lit trois valeurs enti8res &A, B et C' au clavier% Irie- les valeurs A,val&A' val&B' val&C'Affiche- les trois valeurs%
"olution :#include $stdio%h!
main&'(0 Iri par ordre dcroissant de trois entiersen changeant les valeurs0int A, B, C, A)*E+
printf&)ntroduise- trois nombres entiers :'+scanf&.i .i .i, /A, /B, /C'+
printf&Avant le tri : 4tA .i4tB .i4tC .i4n, A, B, C'+0 Qaleur maximale
-
7/24/2019 exercise corrige languge c.docx
6/35
if &B$C'(A)*E B+B C+C A)*E+6
printf&Apr8s le tri : 4tA .i4tB .i4tC .i4n, A, B, C'+return 5+6
Exercice ;:
Ecrive- un programme en langage C qui lit deux valeurs enti8res &A et B' au clavier et qui affiche le signe d
"olution :#include $stdio%h!main&'(0 Afficher le signe du produit de deux entiers sansfaire la multiplication0int A, B+
printf&)ntroduise- deux nombres entiers :'+scanf&.i .i, /A, /B'+if &&A!5 // B!5' RR &A$5 // B$5''
printf&Ge signe du produit .i .i est positif4n, A, B'+else if &&A$5 // B!5' RR &A!5 // B$5''printf&Ge signe du produit .i .i est ngatif4n, A, B'+else
printf&Ge produit .i .i est -ro4n, A, B'+return 5+6
Exercice >:
Ecrive- un programme en langage C qui lit deux valeurs enti8res &A et B' au clavier et qui affiche le signe d
"olution :#include $stdio%h!#include $math%h!main&'
(0 Afficher le signe de la somme de deux entiers sansfaire l3addition0int A, B+
-
7/24/2019 exercise corrige languge c.docx
7/35
printf&)ntroduise- deux nombres entiers :'+scanf&.i .i, /A, /B'+if &&A!5 // B!5' RR &A$5 // B!5 // fabs&A'$fabs&B''RR &A!5 // B$5 // fabs&A'!fabs&B'''
printf&Ge signe de la somme .i = .i est positif4n,A,B'+else if &&A$5 // B$5' RR &A$5 // B!5 // fabs&A'!fabs&B''RR &A!5 // B$5 // fabs&A'$fabs&B'''
printf&Ge signe de la somme .i = .i est ngatif4n,A,B'+else
printf&Ga somme .i = .i est -ro4n, A, B'+return 5+6
Exercice D:
Ecrive- un programme en langage C qui calcule les solutions relles d3une quation du second degr ax7=b
"olution :#include $stdio%h!#include $math%h!main&'(0 Calcul des solutions relles d3une quation du second degr 0int A, B, C+double *+ 0 *iscriminant 0
printf&Calcul des solutions relles d3une quation du second 4n'+printf°r de la forme axS7 = bx = c 5 4n4n'+printf&)ntroduise- les valeurs pour a, b, et c : '+scanf&.i .i .i, /A, /B, /C'+
0 Calcul du discriminant bS7ac 0* poM&B,7' < >%5AC+
0 *istinction des diffrents cas 0if &A5 // B5 // C5' 0 5x 5 0
printf&Iout rel est une solution de cette quation%4n'+
else if &A5 // B5' 0 Contradiction: c # 5 et c 5 0printf&Cette quation ne poss8de pas de solutions%4n'+else if &A5' 0 bx = c 5 0(
printf&Ga solution de cette quation du premier degr est :4n'+printf& x .%>f4n, &double'C0B'+6else if &*$5' 0 bS7ac $ 5 0
printf&Cette quation n3a pas de solutions relles%4n'+else if &*5' 0 bS7ac 5 0(
printf&Cette quation a une seule solution relle :4n'+
-
7/24/2019 exercise corrige languge c.docx
8/35
printf& x .%>f4n, &double'
-
7/24/2019 exercise corrige languge c.docx
9/35
6
printf&Ga somme des .d nombres est .ld 4n, T, "F'+printf&Ge produit des .d nombres est .%5f4n, T, 9*'+printf&Ga moyenne des .d nombres est .%>f4n, T, &float'"F0T'+return 5+6
b' en utilisant do < Mhile,
#include $stdio%h!main&'(int T+ 0 nombre de donnes 0int TFB+ 0 nombre courant 0
int )+ 0 compteur 0long "F+ 0 la somme des nombres entrs 0double 9*+ 0 le produit des nombres entrs 0
printf&Tombre de donnes : '+scanf&.d, /T'+
"F5+9*1+)1+do
(printf&.d% nombre : , )'+scanf&.d, /TFB'+"F = TFB+9* TFB+)==+6Mhile&)$T'+
printf&Ga somme des .d nombres est .ld 4n, T, "F'+printf&Ge produit des .d nombres est .%5f4n, T, 9*'+
printf&Ga moyenne des .d nombres est .%>f4n, T, &float'"F0T'+return 5+6
c' en utilisant for%main&'(int T+ 0 nombre de donnes 0int TFB+ 0 nombre courant 0int )+ 0 compteur 0long "F+ 0 la somme des nombres entrs 0
-
7/24/2019 exercise corrige languge c.docx
10/35
double 9*+ 0 le produit des nombres entrs 0
printf&Tombre de donnes : '+scanf&.d, /T'+
for &"F5, 9*1, )1 + )$T + )=='(
printf&.d% nombre : , )'+scanf&.d, /TFB'+"F = TFB+9* TFB+6
printf&Ga somme des .d nombres est .ld 4n, T, "F'+printf&Ge produit des .d nombres est .%5f4n, T, 9*'+
printf&Ga moyenne des .d nombres est .%>f4n, T, &float'"F0T'+return 5+6
d' Gaquelle des trois variantes est la plus naturelle pour ce probl8meOGa structure for est la plus compacte et celle qui exprime le mieux l3ide de l3algorithme% *3autre part, elle p
Exercice 7:
Calcule- par des soustractions successives le quotient entier et le reste de la division enti8re de deux entiers
"olution :#include $stdio%h!main&'(int T@F+ 0 numrateur de la division enti8re 0int *ET+ 0 dnominateur de la division enti8re 0int *)Q+ 0 rsultat de la division enti8re 0int 9E"+ 0 reste de la division enti8re 0
printf&)ntroduise- le numrateur : '+scanf&.d, /T@F'+
printf&)ntroduise- le dnominateur : '+scanf&.d, /*ET'+
9E"T@F+*)Q5+Mhile&9E"!*ET'(9E"
-
7/24/2019 exercise corrige languge c.docx
11/35
0 ou mieux encore : 00for &9E"T@F, *)Q5 + 9E"!*ET + *)Q=='9E"
-
7/24/2019 exercise corrige languge c.docx
12/35
#include $stdio%h!main&'(int T+ 0 Ga donne 0int )+ 0 Ge compteur 0double VACI+ 0 Ga factorielle TU < Iype double 2 00 cause de la grandeur du rsultat% 0
do(
printf&Entre- un entier naturel : '+scanf&.d, /T'+6Mhile &T$5'+
for &VACI1%5, )1 + )$T + )=='VACI)+
printf &.dU .%5f4n, T, VACI'+return 5+6
Exercice >:
Calcule- par multiplications successives JT de deux entiers naturels J et T entrs au clavier%
"olution :#include $stdio%h!main&'(int J, T+ 0 Ges donnes 0int )+ 0 Ge compteur 0double 9E"@+ 0 Iype double 2 cause de la 00 grandeur du rsultat% 0
do(
printf&Entre- l3entier naturel J : '+scanf&.d, /J'+6Mhile &J$5'+do(
printf&Entre- l3exposant T : '+scanf&.d, /T'+6Mhile &T$5'+
-
7/24/2019 exercise corrige languge c.docx
13/35
0 our T5, le rsultat sera automatiquement JS51 0for &9E"@1%5, )1 + )$T + )=='9E"@J+
0 Attention: our J5 et T5 , 5S5 n3est pas dfini 0if &T5 // J5'
printf&-ro exposant -ro n3est pas dfini U4n'+else
printf&9sultat : .d S .d .%5f4n, J, T, 9E"@'+return 5+6
Exercice D:
Calcule- la somme des T premiers termes de la srie harmonique :1 = 107 = 10; = %%% = 10T
"olution :#include $stdio%h!main&'(int T+ 0 nombre de termes 2 calculer 0int )+ 0 compteur pour la boucle 0float "F+ 0 Iype float 2 cause de la prcision du rsultat% 0
do(printf &Tombre de termes: '+scanf &.d, /T'+6Mhile &T$1'+for &"F5%5, )1 + )$T + )=='"F = &float'10)+
printf&Ga somme des .d premiers termes est .f 4n, T, "F'+return 5+6
Exercice H:
Calcule- la somme, le produit et la moyenne d3une suite de chiffres non nuls entrs au clavier, sachant que lsignal sonore si les donnes sortent de ce domaine%
"olution :#include $stdio%h!main&'(int J+ 0 Ge chiffre courant 0
-
7/24/2019 exercise corrige languge c.docx
14/35
int T5+ 0 Ge compteur des donnes 0int "F5+ 0 Ga somme actuelle 0long 9*1+ 0 Ge produit actuel < Iype long 2 00 cause de la grandeur du rsultat% 00
do(0 "aisie des donnes &pour perfectionnistes' 0
printf&Entre- le .d.s chiffre : , &T=1', &T'Oe:er'+scanf&.d, /J'+
if &J$5RRJ!W'printf&4a'+else if &J'
(T==+"F=J+9*J+6else if &UJ // T!5'(0 "eulement si au moins un chiffre a t accept 0
printf&Ga somme des chiffres est .d 4n, "F'+printf&Ge produit des chiffres est .ld4n, 9*'+printf&Ga moyenne des chiffres est .f 4n, &float'"F0T'+6
6Mhile &J'+return 5+6
Exercice N:
Calcule- le nombre lu 2 rebours d3un nombre positif entr au clavier en supposant que le fichier d3entre staExemple: Entre: 1 7 ; > 5 Affichage: >;71
"olution :#include $stdio%h!main&'(int J+ 0 Ge chiffre courant 0int T5+ 0 Ge compteur des dcimales 0long QAG*1+ 0 Qaleur de la position dcimale courante 0long TFB5+ 0 Ge nombre rsultat 0do(
printf&Entre- le .d.s chiffre : , &T=1', &T'Oe:er'+scanf&.d, /J'+
-
7/24/2019 exercise corrige languge c.docx
15/35
if &J$5RRJ!W'printf&4a'+else if &J'(
TFB = QAG*J+T==+QAG* 15+6else
printf&Ga valeur du nombre renvers est .ld4n, TFB'+6Mhile &J'+return 5+6
Exercice X:
Calcule- le nombre lu 2 rebours d3un nombre positif entr au clavier en supposant que le fichier d3entre sta
"olution :#include $stdio%h!main&'(int TFB+ 0 Ge nombre 2 inverser 0
int T)TQ+ 0 Ge nombre invers 00 Attention: en utilisant le type int, il est impossible 00 d3inverser correctement des nombres comme 155;; %%% 0do(
printf&Entre- un nombre positif &$15555' : , TFB'+scanf&.d, /TFB'+6Mhile &TFB$5 RR TFB!WWWW'+
T)TQ5+
Mhile&TFB!5'(
T)TQ 15+T)TQ = TFB.15+TFB 0 15+6
0 Autre possibilit : 00 for &T)TQ5 + TFB!5 + TFB015'
T)TQ T)TQ15 = TFB.15+0
-
7/24/2019 exercise corrige languge c.docx
16/35
printf&Ge nombre 3invers3 est : .d4n, T)TQ'+return 5+6
Exercice W:
Calcule- le %Y%C%*% de deux entiers naturels entrs au clavier en utilisant l3algorithme d3E@CG)*E%
"olution :#include $stdio%h!main&'(int A, B+ 0 donnes 0int J, K, 9E"IE+ 0 var% d3aide pour l3algorithme d3Euclide 0
do(
printf&Entrer l3entier A &non nul' : '+scanf&.d, /A'+6Mhile&UA'+do(
printf&Entrer l3entier B &non nul' : '+scanf&.d, /B'+
6Mhile&UB'+
for &9E"IEA, JA, KB + 9E"IE + JK, K9E"IE'9E"IE J.K+
printf&Ge YC* de .d et de .d est .d4n, A, B, J'+return 5+6
Ges tableaux en langage C
Exercice 1:Ecrire un programme en langage C qui lit la dimension T d3un tableau I du type int &dimension maximale:Calculer et afficher ensuite la somme des lments du tableau%
"olution :#include $stdio%h!main&'(
-
7/24/2019 exercise corrige languge c.docx
17/35
0 *clarations 0int IZD5[+ 0 tableau donn 0int T+ 0 dimension 0int )+ 0 indice courant 0long "F+ 0 somme des lments < type long 2 cause 00 de la grandeur prvisible du rsultat% 0
0 "aisie des donnes 0printf&*imension du tableau &max%D5' : '+scanf&.d, /T '+for &)5+ )$T+ )=='(
printf&Elment .d : , )'+scanf&.d, /IZ)['+6
0 Affichage du tableau 0printf&Iableau donn :4n'+for &)5+ )$T+ )=='
printf&.d , IZ)['+printf&4n'+0 Calcul de la somme 0for &"F5, )5+ )$T+ )=='"F = IZ)[+0 Edition du rsultat 0
printf&"omme de lments : .ld4n, "F'+return 5+
6
Exercice 7:Ecrire un programme en langage C qui lit la dimension T d3un tableau I du type int &dimension maximale:Effacer ensuite toutes les occurrences de la valeur 5 dans le tableau I et tasser les lments restants% Affiche
"olution :#include $stdio%h!main&'(0 *clarations 0
int IZD5[+ 0 tableau donn 0int T+ 0 dimension 0int ),\+ 0 indices courants 0
0 "aisie des donnes 0printf&*imension du tableau &max%D5' : '+scanf&.d, /T '+for &)5+ )$T+ )=='(
printf&Elment .d : , )'+scanf&.d, /IZ)['+6
-
7/24/2019 exercise corrige languge c.docx
18/35
0 Affichage du tableau 0printf&Iableau donn : 4n'+for &)5+ )$T+ )=='
printf&.d , IZ)['+printf&4n'+0 Effacer les -ros et comprimer : 00 Copier tous les lments de ) vers \ et 00 augmenter \ pour les lments non nuls% 0for &)5, \5 + )$T + )=='(IZ\[ IZ)[+if &IZ)[' \==+60 Touvelle dimension du tableau U 0
T \+
0 Edition des rsultats 0printf&Iableau rsultat :4n'+for &)5+ )$T+ )=='
printf&.d , IZ)['+printf&4n'+return 5+6
Exercice ;:Ecrire un programme en langage C qui lit la dimension T d3un tableau I du type int &dimension maximale:9anger ensuite les lments du tableau I dans l3ordre inverse sans utiliser de tableau d3aide% Afficher le tabl
)de: Echanger les lments du tableau 2 l3aide de deux indices qui parcourent le tableau en commenant re
"olution :#include $stdio%h!main&'(0 *clarations 0int IZD5[+ 0 tableau donn 0int T+ 0 dimension 0int ),\+ 0 indices courants 0int A)*E+ 0 pour l3change 0
0 "aisie des donnes 0printf&*imension du tableau &max%D5' : '+scanf&.d, /T '+for &)5+ )$T+ )=='(
printf&Elment .d : , )'+scanf&.d, /IZ)['+60 Affichage du tableau 0
printf&Iableau donn : 4n'+for &)5+ )$T+ )=='
-
7/24/2019 exercise corrige languge c.docx
19/35
printf&.d , IZ)['+printf&4n'+0 )nverser le tableau 0for &)5, \T
-
7/24/2019 exercise corrige languge c.docx
20/35
for &)5+ )$T+ )=='( if &IZ)[!5' (I"ZT"[IZ)[+
T"==+6if &IZ)[$5' (ITEYZTTEY[IZ)[+
TTEY==+660 Edition du rsultat 0
printf&Iableau I" :4n'+for &)5+ )$T"+ )=='
printf&.d , I"Z)['+printf&4n'+
printf&Iableau ITEY :4n'+for &)5+ )$TTEY+ )=='printf&.d , ITEYZ)['+printf&4n'+return 5+6
Exercice D:Ecrire un programme en langage C qui lit les dimensions G et C d3un tableau I 2 deux dimensions du type iafficher le tableau ainsi que la somme de tous ses lments%
"olution :#include $stdio%h!main&'(0 *clarations 0int IZD5[ZD5[+ 0 tableau donn 0int G, C+ 0 dimensions 0int ), \+ 0 indices courants 0long "F+ 0 somme des lments < type long 2 cause 00 de la grandeur prvisible du rsultat% 0
0 "aisie des donnes 0printf&Tombre de lignes &max%D5' : '+scanf&.d, /G '+
printf&Tombre de colonnes &max%D5' : '+scanf&.d, /C '+for &)5+ )$G+ )=='for &\5+ \$C+ \=='(
printf&ElmentZ.d[Z.d[ : ,),\'+scanf&.d, /IZ)[Z\['+60 Affichage du tableau 0
-
7/24/2019 exercise corrige languge c.docx
21/35
printf&Iableau donn :4n'+for &)5+ )$G+ )=='(for &\5+ \$C+ \=='
printf&.Nd, IZ)[Z\['+printf&4n'+60 Calcul de la somme 0for &"F5, )5+ )$G+ )=='for &\5+ \$C+ \=='"F = IZ)[Z\[+0 Edition du rsultat 0
printf&"omme des lments : .ld4n, "F'+return 5+6
Exercice H:Ecrire un programme en langage C qui lit les dimensions G et C d3un tableau I 2 deux dimensions du type iafficher le tableau ainsi que la somme de chaque ligne et de chaque colonne en n3utilisant qu3une variable d3
"olution :#include $stdio%h!main&'(0 *clarations 0int IZD5[ZD5[+ 0 tableau donn 0
int G, C+ 0 dimensions 0int ), \+ 0 indices courants 0long "F+ 0 somme des lments < type long 2 cause 00 de la grandeur prvisible des rsultats% 0
0 "aisie des donnes 0printf&Tombre de lignes &max%D5' : '+scanf&.d, /G '+
printf&Tombre de colonnes &max%D5' : '+scanf&.d, /C '+for &)5+ )$G+ )=='
for &\5+ \$C+ \=='(
printf&ElmentZ.d[Z.d[ : ,),\'+scanf&.d, /IZ)[Z\['+60 Affichage du tableau 0
printf&Iableau donn :4n'+for &)5+ )$G+ )=='(for &\5+ \$C+ \=='
printf&.Nd, IZ)[Z\['+printf&4n'+
-
7/24/2019 exercise corrige languge c.docx
22/35
60 Calcul et affichage de la somme des lignes 0for &)5+ )$G+ )=='(for &"F5, \5+ \$C+ \=='"F = IZ)[Z\[+
printf&"omme < ligne .d : .ld4n,),"F'+60 Calcul et affichage de la somme des colonnes 0for &\5+ \$C+ \=='(for &"F5, )5+ )$G+ )=='"F = IZ)[Z\[+
printf&"omme < colonne .d : .ld4n,\,"F'+6
return 5+6
Exercice N:Ecrire un programme en langage C qui transf8re un tableau F 2 deux dimensions G et C &dimensions maxiExemple:0 4R a b c d R 0 4R e f g h R ! R a b c d e f g h i ] ^ l RR i ] ^ l R 4 04 0
"olution :#include $stdio%h!main&'(0 *clarations 0int FZ15[Z15[+ 0 tableau 2 7 dimensions 0int QZ155[+ 0 tableau 2 1 dimension 0int G, C+ 0 dimensions 0int ), \+ 0 indices courants 0
0 "aisie des donnes 0printf&Tombre de lignes &max%15' : '+scanf&.d, /G '+
printf&Tombre de colonnes &max%15' : '+scanf&.d, /C '+for &)5+ )$G+ )=='for &\5+ \$C+ \=='(
printf&ElmentZ.d[Z.d[ : ,),\'+scanf&.d, /FZ)[Z\['+6
-
7/24/2019 exercise corrige languge c.docx
23/35
0 Affichage du tableau 7
-
7/24/2019 exercise corrige languge c.docx
24/35
printf&Elment .d : , )'+scanf&.d, /QZ)['+60 Calcul du produit scalaire 0for &"5, )5+ )$T+ )=='" = &long'@Z)[QZ)[+0 Edition du rsultat 0
printf&roduit scalaire : .ld4n, "'+return 5+6
Exercice W:Ecrire un programme en langage C qui dtermine la plus grande et la plus petite valeur dans un tableau d3enmaxima ou minima, le programme retiendra la position du premier maximum ou minimum rencontr%
"olution :#include $stdio%h!main&'(0 *clarations 0int AZD5[+ 0 tableau donn 0int T+ 0 dimension 0int )+ 0 indice courant 0int F)T+ 0 position du minimum 0int FAJ+ 0 position du maximum 00 "aisie des donnes 0
printf&*imension du tableau &max%D5' : '+scanf&.d, /T '+for &)5+ )$T+ )=='(
printf&Elment .d : , )'+scanf&.d, /AZ)['+60 Affichage du tableau 0
Ges chaines de caract8res en langage C
Exercice 1 :Ecrire un programme en langage C qui lit D mots, spars par des espaces et qui les affiche ensuite dans uneExemplevoici une petite phrase UU phrase petite une voici
"olution :
-
7/24/2019 exercise corrige languge c.docx
25/35
#include $stdio%h!main&'(char F1Z;5[, F7Z;5[, F;Z;5[, F>Z;5[, FDZ;5[+
printf&Entre- D mots, spars par des espaces :4n'+scanf &.s .s .s .s .s, F1, F7, F;, F>, FD'+
printf&.s .s .s .s .s4n,FD, F>, F;, F7, F1'+return 5+6
Exercice 7 :Ecrire un programme en langage C qui lit une ligne de texte &ne dpassant pas 755 caract8res' la mmorisea' la longueur G de la chaLne%
b' le nombre de 3e3 contenus dans le texte%c' toute la phrase 2 rebours, sans changer le contenu de la
variable IJI%d' toute la phrase 2 rebours, apr8s avoir invers l3ordre descaract8res dans IJI:voici une petite phrase UU esarhp etitep enu iciov
"olution :#include $stdio%h!main&'(0 *clarations 0
char IJIZ751[+ 0 chaLne donne 0int ),\+ 0 indices courants 0int G+ 0 longueur de la chaLne 0int C+ 0 compteur des lettres 3e3 0int A)*E+ 0 pour l3change des caract8res 0
0 "aisie des donnes 0printf&Entre- une ligne de texte &max%755 caract8res' :4n'+gets&IJI'+ 0 G3utilisation de scanf est impossible pour 00 lire une phrase contenant un nombre variable de mots% 0
0 a' Compter les caract8res 00 Ga marque de fin de chaLne 3453 est 00 utilise comme condition d3arr_t% 0for &G5+ IJIZG[+ G=='+
printf&Ge texte est compos de .d caract8res%4n,G'+
0 b' Compter les lettres 3e3 dans le texte 0C5+for &)5+ IJIZ)[+ )=='if &IJIZ)[3e3' C==+
printf&Ge texte contient .d lettres 43e43%4n,C'+
-
7/24/2019 exercise corrige languge c.docx
26/35
0 c' Afficher la phrase 2 l3envers 0for &)G
-
7/24/2019 exercise corrige languge c.docx
27/35
Exercice > :Ecrire un programme en langage C qui demande l3introduction du nom et du prnom de l3utilisateur et qui a
"olution :#include $stdio%h!#include $string%h!main&'(char TFZ>5[, 9ETFZ>5[+
printf&)ntroduise- votre nom et votre prnom: 4n'+scanf&.s .s, TF, 9ETF'+
printf&4nBon]our .s .s U4n, TF, 9ETF'+printf&Qotre nom est compos de .d lettres%4n,strlen&TF' = strlen&9ETF''+
0 ou bienprintf&Qotre nom est compos de .d lettres%4n,strlen&strcat&TF,9ETF'''+0return 5+6
Exercice D :Ecrire un programme en langage C qui lit un verbe rgulier en er au clavier et qui en affiche la con]ugaisofonctions gets, puts, strcat et strlen%
"olution :#include $stdio%h!#include $string%h!main&'(0 *clarations 0char QE9BZ75[+ 0 chaLne contenant le verbe 0char AVV)Z;5[+ 0 chaLne pour l3affichage 0int G+ 0 longueur de la chaLne 0
0 "aisie des donnes 0
printf&Qerbe : '+gets&QE9B'+
0 Contr?ler s3il s3agit d3un verbe en 3er3 0Gstrlen&QE9B'+if &&QE9BZG
-
7/24/2019 exercise corrige languge c.docx
28/35
AVV)Z5[3453+strcat&AVV), ]e '+strcat&AVV), QE9B'+strcat&AVV), e'+
puts&AVV)'+
% % %
AVV)Z5[3453+strcat&AVV), ils '+strcat&AVV), QE9B'+strcat&AVV), ent'+
puts&AVV)'+6return 5+
6
Exercice H :Ecrire un programme en langage C qui lit deux chaLnes de caract8res C`1 et C`7 et qui copie la premi8rea' @tiliser les fonctions spciales de $string!%
b' @tiliser uniquement les fonctions gets et puts%
"olution :a' @tiliser les fonctions spciales de $string!%#include $stdio%h!#include $string%h!
main&'(0 *clarations 0char C`1Z155[, C`7Z155[+ 0 chaLnes donnes 0char C`;Z155[+ 0 chaLne rsultat 0
0 "aisie des donnes 0printf&)ntroduise- la premi8re chaLne de caract8res : '+gets&C`1'+
printf&)ntroduise- la deuxi8me chaLne de caract8res : '+gets&C`7'+
0 Iraitements 0strncpy&C`;, C`1, strlen&C`1'07'+strncat&C`;, C`7, strlen&C`7'07'+0 Affichage du rsultat 0
printf&@n demi 4.s4 plus un demi 4.s4 donne 4.s44n,C`1, C`7, C`;'+return 5+6
b' @tiliser uniquement les fonctions gets et puts%#include $stdio%h!
-
7/24/2019 exercise corrige languge c.docx
29/35
main&'(0 *clarations 0char C`1Z155[, C`7Z155[+ 0 chaLnes donnes 0char C`;Z155[+ 0 chaLne rsultat 0int G1,G7+ 0 longueurs de C`1 et C`7 0int )+ 0 indice courant dans C`1 et C`7 0int \+ 0 indice courant dans C`; 0
0 "aisie des donnes 0puts&)ntroduise- la premi8re chaLne de caract8res : '+gets&C`1'+
puts&)ntroduise- la deuxi8me chaLne de caract8res : '+gets&C`7'+
0 *termination les longueurs de C`1 et C`7 0for &G15+ C`1ZG1[+ G1==' +for &G75+ C`7ZG7[+ G7==' +0 Copier la premi8re moiti de C`1 vers C`; 0for &)5 + )$&G107' + )=='C`;Z)[C`1Z)[+0 Copier la premi8re moiti de C`7 vers C`; 0\)+for &)5 + )$&G707' + )=='(C`;Z\[C`7Z)[+
\==+60 Ierminer la chaLne C`; 0C`;Z\[3453+
0 Affichage du rsultat 0puts&ChaLne rsultat : '+puts&C`;'+return 5+6
Ges pointeurs en langage C
Exercice 1 :"oit un pointeur qui 3pointe3 sur un tableau A:int AZ[ (17, 7;, ;>, >D, DH, HN, NX, XW, W56+int + A+uelles valeurs ou adresses fournissent ces expressions:a' =7
-
7/24/2019 exercise corrige languge c.docx
30/35
b' &=7'c' /=1d' /AZ>[b' &=7' ! la valeur ;>c' /=1 ! l3adresse du pointeur derri8re le pointeur
&rarement utilise'd' /AZ>[
-
7/24/2019 exercise corrige languge c.docx
31/35
(printf&Elment .d : , 1
-
7/24/2019 exercise corrige languge c.docx
32/35
60 Affichage du tableau 0for &1A+ 1$A=T+ 1=='
printf&.d , 1'+printf&4n'+0 )nverser la tableau 0for &1A,7A=&T
-
7/24/2019 exercise corrige languge c.docx
33/35
0 Affichage des tableaux 0printf&Iableau donn A :4n'+for &AA+ A$A=T+ A=='
printf&.d , A'+printf&4n'+printf&Iableau donn B :4n'+for &BB+ B$B=F+ B=='
printf&.d , B'+printf&4n'+0 Copier B 2 la fin de A 0for &AA=T,BB + B$B=F + A==,B=='A B+0 Touvelle dimension de A 0
T = F+0 Edition du rsultat 0
printf&Iableau rsultat A :4n'+for &AA+ A$A=T+ A=='printf&.d , A'+printf&4n'+return 5+6
Exercice D :Ecrire de deux faons diffrentes, un programme en langage C qui vrifie sans utiliser une fonction de $stria' en utilisant uniquement le formalisme tableau
b' en utilisant des pointeurs au lieu des indices numriques
9appel: @n palindrome est un mot qui reste le m_me qu3on le lise de gauche 2 droite ou de droite 2 gauche:
"olution :a' en utilisant uniquement le formalisme tableau#include $stdio%h!main&'(0 *clarations 0char C`Z151[+ 0 chaLne donne 0int ),\+ 0 indices courants 0int AG)+ 0 indicateur logique: 0
0 vrai si C` est un palindrome 0
0 "aisie des donnes 0printf&Entre- une ligne de texte &max%155 caract8res' :4n'+gets&C`'+0 lacer \ sur la derni8re lettre de la chaLne 0for&\5+ C`Z\[+ \=='+\
-
7/24/2019 exercise corrige languge c.docx
34/35
if &C`Z)[ U C`Z\['AG)5+
0 Affichage du rsultat 0if &AG)'
printf&Ga chaLne 4.s4 est un palindrome%4n, C`'+else
printf&Ga chaLne 4.s4 n3est pas un palindrome%4n, C`'+return 5+6
b' en utilisant des pointeurs au lieu des indices numriques :#include $stdio%h!main&'(
0 *clarations 0char C`Z151[+ 0 chaLne donne 0char 1,7+ 0 pointeurs d3aide 0int AG)+ 0 indicateur logique: 00 vrai si C` est un palindrome 0
0 "aisie des donnes 0printf&Entre- une ligne de texte &max%155 caract8res' :4n'+gets&C`'+0 lacer 7 sur la derni8re lettre de la chaLne 0for &7C`+ 7+ 7=='
+7
-
7/24/2019 exercise corrige languge c.docx
35/35
0 *clarations 0char C`Z151[+ 0 chaLne donne 0char + 0 pointeur d3aide 0
0 "aisie des donnes 0printf&Entre- une ligne de texte &max%155 caract8res' :4n'+gets&C`'+0 lacer 2 la fin de la chaLne 0for &C`+ + =='+0 Affichage du rsultat 0
printf&Ga chaLne 4.s4 est forme de .d caract8res%4n,C`,