exercise corrige languge c.docx

Embed Size (px)

Citation preview

  • 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&degr 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`,