Java, Javascript, Linux, UML, Projet - Langage C
Java, Javascript, Linux, UML, Projet - Langage C
Accueil ▼
Langage C
Ecrire un programme en langage C qui permute et affiche les valeurs de trois variables A, B, C de type
entier qui sont entrées au clavier :
A ==> B , B ==> C , C ==> A
Solution :
#include <stdio.h>
main()
{
int A, B, C, AIDE;
printf("Introduisez trois nombres (A, B, C) : ");
scanf("%d %d %d", &A, &B, &C);
/* Affichage à l'aide de tabulations */
printf("A = %d\tB = %d\tC = %d\n", A, B, C);
AIDE=A;
A=C;
C=B;
B=AIDE;
printf("A = %d\tB = %d\tC = %d\n", A, B, C);
return 0;
}
Exercice 2 :
Ecrire un programme en langage C qui affiche le quotient et le reste de la division entière de deux nombres
entiers entrés au clavier ainsi que le quotient rationnel de ces nombres.
http://www.exercices-corriges.com/p/langage-c.html?m=1 1/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
#include <stdio.h>
main()
{
int A, B;
printf("Introduisez deux nombres entiers : ");
scanf("% d % d", &A, &B);
printf("Division entiere : % d\n", A/B);
printf("Reste : % d\n", A% B);
printf("Quotient rationnel : % f\n", (float)A/B);
return 0;
}
Exercice 3 :
Ecrire un programme en langage C qui affiche la résistance équivalente à trois résistances
R1, R2, R3 (type double),
- si les résistances sont branchées en série:
Rsér = R1+R2+R3
- si les résistances sont branchées en parallèle:
Rpar = (R1*R2*R3)/(R1*R2+R1*R3+R2*R3)
Solution :
#include <stdio.h>
main()
{
double R1, R2, R3, RRES;
printf("Introduisez les valeurs pour R1, R2 et R3 : ");
scanf("% lf % lf % lf", &R1, &R2, &R3);
RRES=R1+R2+R3;
printf("Resistance resultante serielle : % f\n", RRES);
RRES=(R1*R2*R3)/(R1*R2+R1*R3+R2*R3);
printf("Resistance resultante parallele : % f\n", RRES);
return 0;
}
Exercice 4 :
Ecrire un programme en langage C qui calcule et affiche l'aire d'un triangle dont il faut entrer
les longueurs des trois côtés. Utilisez la formule :
S2 = P(P-A)(P-B)(P-C)
où A, B, C sont les longueurs des trois côtés (type int) et P le demi-périmètre du triangle.
Solution :
http://www.exercices-corriges.com/p/langage-c.html?m=1 2/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
#include <stdio.h>
#include <math.h>
main()
{
/* Pour ne pas perdre de précision lors de la division, */
/* déclarons P comme rationnel. */
int A, B, C;
float P;
printf("Introduisez les valeurs pour A, B et C : ");
scanf("% d % d % d", &A, &B, &C);
/* En forçant la conversion de A, les autres opérandes */
/* sont converties automatiquement. */
P=((float)A+B+C)/2;
printf("Surface du triangle S = % f\n",sqrt(P*(P-A)*(P-B)*(P-C)));
return 0;
}
Exercice 5 :
Ecrire un programme en langage C qui calcule la somme de quatre nombres du type int entrés au clavier.
Solution :
main()
{
int A;
long SOM;
SOM = 0;
printf("Entrez le premier nombre : ");
scanf("%d", &A);
SOM+=A;
printf("Entrez le deuxième nombre : ");
scanf("%d", &A);
SOM+=A;
printf("Entrez le troisième nombre : ");
scanf("%d", &A);
SOM+=A;
printf("Entrez le quatrième nombre : ");
scanf("%d", &A);
SOM+=A;
printf("La somme des nombres entrés est % ld\n", SOM);
return 0;
}
Exercice 6 :
Ecrire un programme en langage C qui calcule et affiche la distance DIST (type double) entre deux points A
et B du plan dont les coordonnées (XA, YA) et (XB, YB) sont entrées au clavier comme entiers.
http://www.exercices-corriges.com/p/langage-c.html?m=1 3/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
#include <stdio.h>
#include <math.h>
main()
{
int XA, YA, XB, YB;
double DIST;
/* Attention: La chaîne de format que nous utilisons */
/* s'attend à ce que les données soient séparées par */
/* une virgule lors de l'entrée. */
printf("Entrez les coordonnées du point A : XA,YA ");
scanf("% d,% d", &XA, &YA);
printf("Entrez les coordonnées du point B : XB,YB ");
scanf("% d,% d", &XB, &YB);
DIST=sqrt(pow(XA-XB,2)+pow(YA-YB,2));
printf("La distance entre A(% d,% d) et B(% d, % d) est % .2f\n",
XA, YA, XB, YB, DIST);
return 0;
}
Exercice 7:
Ecrire un programme en langage C qui lit un caractère au clavier et affiche le caractère ainsi que son code
numérique.
Solution :
#include <stdio.h>
main()
{
int C;
printf("Introduire un caractère suivi de 'Enter'\n");
C = getchar();
printf("Le caractère % c a le code ASCII % d\n", C, C);
return 0;
}
http://www.exercices-corriges.com/p/langage-c.html?m=1 4/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
a) if - else et une variable d'aide MAX
#include <stdio.h>
main()
{
int A, B, C;
int MAX;
printf("Introduisez trois nombres entiers :");
scanf("% i % i % i", &A, &B, &C);
if (A>B)
MAX=A;
else
MAX=B;
if (C>MAX)
MAX=C;
printf("La valeur maximale est % i\n", MAX);
return 0;
}
Exercice 2:
Écrivez un programme en langage C qui lit trois valeurs entières (A, B et C) au clavier. Triez
les valeurs A, B et C par échanges successifs de manière à obtenir :
http://www.exercices-corriges.com/p/langage-c.html?m=1 5/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
#include <stdio.h>
main()
{
/* Tri par ordre décroissant de trois entiers
en échangeant les valeurs
*/
int A, B, C, AIDE;
printf("Introduisez trois nombres entiers :");
scanf("%i %i %i", &A, &B, &C);
printf("Avant le tri : \tA = %i\tB = %i\tC = %i\n", A, B, C);
/* Valeur maximale -> A */
if (A<B)
{
AIDE = A;
A = B;
B = AIDE;
}
if (A<C)
{
AIDE = A;
A = C;
C = AIDE;
}
/* trier B et C */
if (B<C)
{
AIDE = B;
B = C;
C = AIDE;
}
printf("Après le tri : \tA = % i\tB = % i\tC = % i\n", A, B, C);
return 0;
}
Exercice 3:
Ecrivez un programme en langage C qui lit deux valeurs entières (A et B) au clavier et qui affiche le signe
du produit de A et B sans faire la multiplication.
Solution :
#include <stdio.h>
main()
{
/* Afficher le signe du produit de deux entiers sans
http://www.exercices-corriges.com/p/langage-c.html?m=1 6/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
faire la multiplication
*/
int A, B;
printf("Introduisez deux nombres entiers :");
scanf("%i %i", &A, &B);
if ((A>0 && B>0) || (A<0 && B<0))
printf("Le signe du produit % i * % i est positif\n", A, B);
else if ((A<0 && B>0) || (A>0 && B<0))
printf("Le signe du produit % i * % i est négatif\n", A, B);
else
printf("Le produit % i * % i est zéro\n", A, B);
return 0;
}
Exercice 4:
Ecrivez un programme en langage C qui lit deux valeurs entières (A et B) au clavier et qui affiche le signe
de la somme de A et B sans faire l'addition. Utilisez la fonction fabs de la bibliothèque <math.h>.
Solution :
#include <stdio.h>
#include <math.h>
main()
{
/* Afficher le signe de la somme de deux entiers sans
faire l'addition
*/
int A, B;
printf("Introduisez deux nombres entiers :");
scanf("%i %i", &A, &B);
if ((A>0 && B>0) || (A<0 && B>0 && fabs(A)<fabs(B))
|| (A>0 && B<0 && fabs(A)>fabs(B)))
printf("Le signe de la somme % i + % i est positif\n",A,B);
else if ((A<0 && B<0) || (A<0 && B>0 && fabs(A)>fabs(B))
|| (A>0 && B<0 && fabs(A)<fabs(B)))
printf("Le signe de la somme % i + % i est négatif\n",A,B);
else
printf("La somme % i + % i est zéro\n", A, B);
return 0;
}
Exercice 5:
Ecrivez un programme en langage C qui calcule les solutions réelles d'une équation du second degré
ax2 +bx+c = 0.
http://www.exercices-corriges.com/p/langage-c.html?m=1 7/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
#include <stdio.h>
#include <math.h>
main()
{
/* Calcul des solutions réelles d'une équation du second degré */
int A, B, C;
double D; /* Discriminant */
printf("Calcul des solutions réelles d'une équation du second \n");
printf("degré de la forme ax^2 + bx + c = 0 \n\n");
printf("Introduisez les valeurs pour a, b, et c : ");
scanf("%i %i %i", &A, &B, &C);
Exercice 1:
http://www.exercices-corriges.com/p/langage-c.html?m=1 8/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Ecrivez un programme en langage C qui lit N nombres entiers au clavier et qui affiche leur
somme, leur produit et leur moyenne. Choisissez un type approprié pour les valeurs à afficher.
Le nombre N est à entrer au clavier. Résolvez ce problème,
a) en utilisant while,
b) en utilisant do - while,
c) en utilisant for.
d) Laquelle des trois variantes est la plus naturelle pour ce problème?
Solution :
a) en utilisant while,
#include <stdio.h>
main()
{
int N; /* nombre de données */
int NOMB; /* nombre courant */
int I; /* compteur */
long SOM; /* la somme des nombres entrés */
double PROD; /* le produit des nombres entrés */
SOM=0;
PROD=1;
I=1;
while(I<=N)
{
printf("% d. nombre : ", I);
scanf("% d", &NOMB);
SOM += NOMB;
PROD *= NOMB;
I++;
}
b) en utilisant do - while,
#include <stdio.h>
main()
{
int N; /* nombre de données */
int NOMB; /* nombre courant */
int I; /* compteur */
long SOM; /* la somme des nombres entrés */
double PROD; /* le produit des nombres entrés */
http://www.exercices-corriges.com/p/langage-c.html?m=1 9/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
SOM=0;
PROD=1;
I=1;
do
{
printf("%d. nombre : ", I);
scanf("%d", &NOMB);
SOM += NOMB;
PROD *= NOMB;
I++;
}
while(I<=N);
c) en utilisant for.
main()
{
int N; /* nombre de données */
int NOMB; /* nombre courant */
int I; /* compteur */
long SOM; /* la somme des nombres entrés */
double PROD; /* le produit des nombres entrés */
http://www.exercices-corriges.com/p/langage-c.html?m=1 10/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Exercice 2:
Calculez par des soustractions successives le quotient entier et le reste de la division entière de deux entiers
entrés au clavier.
Solution :
#include <stdio.h>
main()
{
int NUM; /* numérateur de la division entière */
int DEN; /* dénominateur de la division entière */
int DIV; /* résultat de la division entière */
int RES; /* reste de la division entière */
RES=NUM;
DIV=0;
while(RES>=DEN)
{
RES-=DEN;
DIV++;
}
/* ou mieux encore : */
/*
for (RES=NUM, DIV=0 ; RES>=DEN ; DIV++)
RES-=DEN;
*/
printf(" %d divisé par %d est %d reste %d\n", NUM, DEN, DIV, RES);
return 0;
}
Exercice 3:
Calculez la factorielle N! = 1*2*3*...*(N-1)*N d'un entier naturel N en respectant que 0!=1.
a) Utilisez while,
b) Utilisez for.
http://www.exercices-corriges.com/p/langage-c.html?m=1 11/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
a) avec la boucle while,
#include <stdio.h>
main()
{
int N; /* La donnée */
int I; /* Le compteur */
double FACT; /* La factorielle N! - Type double à */
/* cause de la grandeur du résultat. */
do
{
printf("Entrez un entier naturel : ");
scanf("%d", &N);
}
while (N<0);
/* a */
/* Pour N=0, le résultat sera automatiquement 0!=1 */
I=1;
FACT=1;
while (I<=N)
{
FACT*=I;
I++;
}
do
{
printf("Entrez un entier naturel : ");
scanf("%d", &N);
}
while (N<0);
Exercice 4:
Solution :
#include <stdio.h>
main()
{
int X, N; /* Les données */
int I; /* Le compteur */
double RESU; /* Type double à cause de la */
/* grandeur du résultat. */
do
{
printf("Entrez l'entier naturel X : ");
scanf("%d", &X);
}
while (X<0);
do
{
printf("Entrez l'exposant N : ");
scanf("%d", &N);
}
while (N<0);
Exercice 5:
Solution :
#include <stdio.h>
main()
{
int N; /* nombre de termes à calculer */
int I; /* compteur pour la boucle */
float SOM; /* Type float à cause de la précision du résultat. */
do
{
printf ("Nombre de termes: ");
scanf ("%d", &N);
}
while (N<1);
for (SOM=0.0, I=1 ; I<=N ; I++)
SOM += (float)1/I;
printf("La somme des %d premiers termes est %f \n", N, SOM);
return 0;
}
Exercice 6:
Calculez la somme, le produit et la moyenne d'une suite de chiffres non nuls entrés au clavier,
sachant que la suite est terminée par zéro. Retenez seulement les chiffres (0, 1 ... 9) lors de
l'entrée des données et effectuez un signal sonore si les données sortent de ce domaine.
Solution :
#include <stdio.h>
main()
{
int X; /* Le chiffre courant */
int N=0; /* Le compteur des données */
int SOM=0; /* La somme actuelle */
long PROD=1; /* Le produit actuel - Type long à */
/* cause de la grandeur du résultat. */
*/
do
{
/* Saisie des données (pour perfectionnistes) */
printf("Entrez le %d%s chiffre : ", (N+1), (N)?"e":"er");
scanf("%d", &X);
if (X<0||X>9)
printf("\a");
else if (X)
{
http://www.exercices-corriges.com/p/langage-c.html?m=1 14/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
N++;
SOM+=X;
PROD*=X;
}
else if (!X && N>0)
{/* Seulement si au moins un chiffre a été accepté */
printf("La somme des chiffres est %d \n", SOM);
printf("Le produit des chiffres est % ld\n", PROD);
printf("La moyenne des chiffres est % f \n", (float)SOM/N);
}
}
while (X);
return 0;
}
Exercice 7:
Calculez le nombre lu à rebours d'un nombre positif entré au clavier en supposant que le fichier
d'entrée standard contient une suite de chiffres non nuls, terminée par zéro (Contrôlez s'il s'agit
vraiment de chiffres). Exemple: Entrée: 1 2 3 4 0 Affichage: 4321
Solution :
#include <stdio.h>
main()
{
int X; /* Le chiffre courant */
int N=0; /* Le compteur des décimales */
long VALD=1; /* Valeur de la position décimale courante */
long NOMB=0; /* Le nombre résultat */
do
{
printf("Entrez le %d%s chiffre : ", (N+1), (N)?"e":"er");
scanf("%d", &X);
if (X<0||X>9)
printf("\a");
else if (X)
{
NOMB += VALD*X;
N++;
VALD *= 10;
}
else
printf("La valeur du nombre renversé est % ld\n", NOMB);
}
while (X);
return 0;
}
http://www.exercices-corriges.com/p/langage-c.html?m=1 15/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Exercice 8:
Calculez le nombre lu à rebours d'un nombre positif entré au clavier en supposant que le fichier
d'entrée standard contient le nombre à inverser. Exemple: Entrée: 1234 Affichage: 4321
Solution :
#include <stdio.h>
main()
{
int NOMB; /* Le nombre à inverser */
int NINV; /* Le nombre inversé */
/* Attention: en utilisant le type int, il est impossible */
/* d'inverser correctement des nombres comme 10033 ... */
do
{
printf("Entrez un nombre positif (<10000) : ", NOMB);
scanf("%d", &NOMB);
}
while (NOMB<0 || NOMB>9999);
NINV=0;
while(NOMB>0)
{
NINV *= 10;
NINV += NOMB% 10;
NOMB /= 10;
}
/* Autre possibilité : */
/* for (NINV=0 ; NOMB>0 ; NOMB/=10)
NINV = NINV*10 + NOMB% 10;
*/
Exercice 9:
Calculez le P.G.C.D. de deux entiers naturels entrés au clavier en utilisant l'algorithme d'EUCLIDE.
Solution :
#include <stdio.h>
main()
{
int A, B; /* données */
http://www.exercices-corriges.com/p/langage-c.html?m=1 16/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
do
{
printf("Entrer l'entier A (non nul) : ");
scanf("%d", &A);
}
while(!A);
do
{
printf("Entrer l'entier B (non nul) : ");
scanf("%d", &B);
}
while(!B);
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
int I; /* indice courant */
long SOM; /* somme des éléments - type long à cause */
/* de la grandeur prévisible du résultat. */
Exercice 2:
Ecrire un programme en langage C qui lit la dimension N d'un tableau T du type int
(dimension maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier
et affiche le tableau.
Effacer ensuite toutes les occurrences de la valeur 0 dans le tableau T et tasser les éléments
restants. Afficher le tableau résultant.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
int I,J; /* indices courants */
T[J] = T[I];
if (T[I]) J++;
}
/* Nouvelle dimension du tableau ! */
N = J;
/* Edition des résultats */
printf("Tableau résultat :\n");
for (I=0; I<N; I++)
printf("%d ", T[I]);
printf("\n");
return 0;
}
Exercice 3:
Ecrire un programme en langage C qui lit la dimension N d'un tableau T du type int
(dimension maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier
et affiche le tableau.
Ranger ensuite les éléments du tableau T dans l'ordre inverse sans utiliser de tableau d'aide.
Afficher le tableau résultant.
Idée: Echanger les éléments du tableau à l'aide de deux indices qui parcourent le tableau en
commençant respectivement au début et à la fin du tableau et qui se rencontrent en son milieu.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
int I,J; /* indices courants */
int AIDE; /* pour l'échange */
T[I] = T[J];
T[J] = AIDE;
}
/* Edition des résultats */
printf("Tableau résultat :\n");
for (I=0; I<N; I++)
printf("%d ", T[I]);
printf("\n");
return 0;
}
Exercice 4:
Ecrire un programme en langage C qui lit la dimension N d'un tableau T du type int
(dimension maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier
et affiche le tableau.
Copiez ensuite toutes les composantes strictement positives dans un deuxième tableau TPOS
et toutes les valeurs strictement négatives dans un troisième tableau TNEG. Afficher les
tableaux TPOS et TNEG.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
/* Les tableaux et leurs dimensions */
int T[50], TPOS[50], TNEG[50];
int N, NPOS, NNEG;
int I; /* indice courant */
}
if (T[I]<0) {
TNEG[NNEG]=T[I];
NNEG++;
}
}
/* Edition du résultat */
printf("Tableau TPOS :\n");
for (I=0; I<NPOS; I++)
printf("%d ", TPOS[I]);
printf("\n");
printf("Tableau TNEG :\n");
for (I=0; I<NNEG; I++)
printf("%d ", TNEG[I]);
printf("\n");
return 0;
}
Exercice 5:
Ecrire un programme en langage C qui lit les dimensions L et C d'un tableau T à deux
dimensions du type int (dimensions maximales: 50 lignes et 50 colonnes). Remplir le tableau
par des valeurs entrées au clavier et afficher le tableau ainsi que la somme de tous ses
éléments.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int T[50][50]; /* tableau donné */
int L, C; /* dimensions */
int I, J; /* indices courants */
long SOM; /* somme des éléments - type long à cause */
/* de la grandeur prévisible du résultat. */
Exercice 6:
Ecrire un programme en langage C qui lit les dimensions L et C d'un tableau T à deux dimensions du type
int (dimensions maximales: 50 lignes et 50 colonnes). Remplir le tableau par des valeurs entrées au clavier et
afficher le tableau ainsi que la somme de chaque ligne et de chaque colonne en n'utilisant qu'une variable
d'aide pour la somme.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int T[50][50]; /* tableau donné */
int L, C; /* dimensions */
int I, J; /* indices courants */
long SOM; /* somme des éléments - type long à cause */
/* de la grandeur prévisible des résultats. */
Exercice 7:
Ecrire un programme en langage C qui transfère un tableau M à deux dimensions L et C
(dimensions maximales: 10 lignes et 10 colonnes) dans un tableau V à une dimension L*C.
Exemple:
/ \
|a bcd| / \
| e f g h | ==> | a b c d e f g h i j k l |
|i j kl | \ /
\ /
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int M[10][10]; /* tableau à 2 dimensions */
int V[100]; /* tableau à 1 dimension */
int L, C; /* dimensions */
int I, J; /* indices courants */
Exercice 8:
Ecrire un programme en langage C qui calcule le produit scalaire de deux vecteurs d'entiers
U et V (de même dimension).
Exemple:
/ \ / \
| 3 2 -4 | * | 2 -3 5 | = 3*2+2*(-3)+(-4)*5 = -20
\ / \ /
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int U[50], V[50]; /* tableaux donnés */
int N; /* dimension */
int I; /* indice courant */
long PS; /* produit scalaire */
/* Saisie des données */
printf("Dimension des tableaux (max.50) : ");
scanf("%d", &N );
printf("** Premier tableau **\n");
for (I=0; I<N; I++)
{
printf("Elément %d : ", I);
scanf("%d", &U[I]);
}
printf("** Deuxième tableau **\n");
for (I=0; I<N; I++)
{
printf("Elément %d : ", I);
scanf("%d", &V[I]);
http://www.exercices-corriges.com/p/langage-c.html?m=1 24/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
}
/* Calcul du produit scalaire */
for (PS=0, I=0; I<N; I++)
PS += (long)U[I]*V[I];
/* Edition du résultat */
printf("Produit scalaire : % ld\n", PS);
return 0;
}
Exercice 9:
Ecrire un programme en langage C qui détermine la plus grande et la plus petite valeur dans
un tableau d'entiers A. Afficher ensuite la valeur et la position du maximum et du minimum. Si
le tableau contient plusieurs maxima ou minima, le programme retiendra la position du
premier maximum ou minimum rencontré.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension */
int I; /* indice courant */
int MIN; /* position du minimum */
int MAX; /* position du maximum */
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (I=0; I<N; I++)
{
printf("Elément %d : ", I);
scanf("%d", &A[I]);
}
/* Affichage du tableau */
http://www.exercices-corriges.com/p/langage-c.html?m=1 25/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
#include <stdio.h>
main()
{
char M1[30], M2[30], M3[30], M4[30], M5[30];
printf("Entrez 5 mots, séparés par des espaces :\n");
scanf ("% s % s % s % s % s", M1, M2, M3, M4, M5);
printf("% s % s % s % s % s\n",M5, M4, M3, M2, M1);
return 0;
}
Exercice 2 :
Ecrire un programme en langage C qui lit une ligne de texte (ne dépassant pas 200
caractères) la mémorise dans une variable TXT et affiche ensuite:
a) la longueur L de la chaîne.
b) le nombre de 'e' contenus dans le texte.
c) toute la phrase à rebours, sans changer le contenu de la
variable TXT.
d) toute la phrase à rebours, après avoir inversé l'ordre des
caractères dans TXT:
voici une petite phrase !
! esarhp etitep enu iciov
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
char TXT[201]; /* chaîne donnée */
int I,J; /* indices courants */
int L; /* longueur de la chaîne */
int C; /* compteur des lettres 'e' */
int AIDE; /* pour l'échange des caractères */
http://www.exercices-corriges.com/p/langage-c.html?m=1 26/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
C=0;
for (I=0; TXT[I]; I++)
if (TXT[I]=='e') C++;
printf("Le texte contient % d lettres \'e\'.\n",C);
Exercice 3 :
Ecrire un programme en langage C qui lit un texte TXT (de moins de 200 caractères) et qui
enlève toutes les apparitions du charactère 'e' en tassant les éléments restants. Les
modifications se feront dans la même variable TXT.
Exemple:
Cette ligne contient quelques lettres e.
Ctt lign contint qulqus lttrs .
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
char TXT[201]; /* chaîne donnée */
int I,J; /* indices courants */
TXT[J]='\0';
/* Edition du résultat */
puts(TXT);
return 0;
}
Exercice 4 :
Ecrire un programme en langage C qui demande l'introduction du nom et du prénom de
l'utilisateur et qui affiche alors la longueur totale du nom sans compter les espaces. Employer
la fonction strlen.
Solution :
#include <stdio.h>
#include <string.h>
main()
{
char NOM[40], PRENOM[40];
printf("Introduisez votre nom et votre prénom: \n");
scanf("%s %s", NOM, PRENOM);
printf("\nBonjour %s %s !\n", NOM, PRENOM);
printf("Votre nom est composé de %d lettres.\n",
strlen(NOM) + strlen(PRENOM));
/* ou bien
printf("Votre nom est composé de %d lettres.\n",
strlen(strcat(NOM,PRENOM)));
*/
return 0;
}
Exercice 5 :
Ecrire un programme en langage C qui lit un verbe régulier en "er" au clavier et qui en affiche
la conjugaison au présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en "er"
avant de conjuguer. Utiliser les fonctions gets, puts, strcat et strlen.
Solution :
#include <stdio.h>
#include <string.h>
main()
{
/* Déclarations */
char VERB[20]; /* chaîne contenant le verbe */
char AFFI[30]; /* chaîne pour l'affichage */
int L; /* longueur de la chaîne */
L=strlen(VERB);
if ((VERB[L-2]!='e') || (VERB[L-1]!='r'))
puts("\aCe n'est pas un verbe du premier groupe.!");
else
{
/* Couper la terminaison 'er'. */
VERB[L-2]='\0';
/* Conjuguer ... */
AFFI[0]='\0';
strcat(AFFI, "je ");
strcat(AFFI, VERB);
strcat(AFFI, "e");
puts(AFFI);
...
AFFI[0]='\0';
strcat(AFFI, "ils ");
strcat(AFFI, VERB);
strcat(AFFI, "ent");
puts(AFFI);
}
return 0;
}
Exercice 6 :
Ecrire un programme en langage C qui lit deux chaînes de caractères CH1 et CH2 et qui
copie la première moitié de CH1 et la première moitié de CH2 dans une troisième chaîne
CH3. Afficher le résultat.
a) Utiliser les fonctions spéciales de <string>.
b) Utiliser uniquement les fonctions gets et puts.
Solution :
a) Utiliser les fonctions spéciales de <string>.
#include <stdio.h>
#include <string.h>
main()
{
/* Déclarations */
char CH1[100], CH2[100]; /* chaînes données */
char CH3[100]=""; /* chaîne résultat */
http://www.exercices-corriges.com/p/langage-c.html?m=1 29/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
/* Traitements */
strncpy(CH3, CH1, strlen(CH1)/2);
strncat(CH3, CH2, strlen(CH2)/2);
/* Affichage du résultat */
printf("Un demi \"%s\" plus un demi \"%s\" donne \"%s\"\n",CH1, CH2, CH3);
return 0;
}
/* Affichage du résultat */
puts("Chaîne résultat : ");
puts(CH3);
return 0;
}
http://www.exercices-corriges.com/p/langage-c.html?m=1 30/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Solution :
Soit P un pointeur qui 'pointe' sur un tableau A:
int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
int *P;
P = A;
Exercice 2 :
Ecrire un programme en langage C qui lit un entier X et un tableau A du type int au clavier et
élimine toutes les occurrences de X dans A en tassant les éléments restants. Le programme
utilisera les pointeurs P1 et P2 pour parcourir le tableau.
Solution :
#include <stdio.h>
main()
http://www.exercices-corriges.com/p/langage-c.html?m=1 31/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int X; /* valeur à éliminer */
int *P1, *P2; /* pointeurs d'aide */
Exercice 3 :
Ecrire un programme en langage C qui range les éléments d'un tableau A du type int dans
l'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et une variable numérique
AIDE pour la permutation des éléments.
Solution :
#include <stdio.h>
main()
{
http://www.exercices-corriges.com/p/langage-c.html?m=1 32/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int AIDE; /* pour la permutation */
int *P1, *P2; /* pointeurs d'aide */
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément % d : ", P1-A);
scanf("% d", P1);
}
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("% d ", *P1);
printf("\n");
/* Inverser la tableau */
for (P1=A,P2=A+(N-1); P1<P2; P1++,P2--)
{
AIDE = *P1;
*P1 = *P2;
*P2 = AIDE;
}
/* Edition du résultat */
for (P1=A; P1<A+N; P1++)
printf("% d ", *P1);
printf("\n");
return 0;
}
Exercice 4 :
Ecrire un programme en langage C qui lit deux tableaux d'entiers A et B et leurs dimensions
N et M au clavier et qui ajoute les éléments de B à la fin de A. Utiliser deux pointeurs PA et PB
pour le transfer et afficher le tableau résultant A.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int A[100], B[50]; /* tableaux */
int N, M; /* dimensions des tableaux */
int *PA,*PB; /* pointeurs d'aide */
Exercice 5 :
Ecrire de deux façons différentes, un programme en langage C qui vérifie sans utiliser une fonction de
<string>, si une chaîne CH introduite au clavier est un palindrome:
a) en utilisant uniquement le formalisme tableau
b) en utilisant des pointeurs au lieu des indices numériques
Rappel: Un palindrome est un mot qui reste le même qu'on le lise de gauche à droite ou de droite à gauche:
Solution :
a) en utilisant uniquement le formalisme tableau
#include <stdio.h>
main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
int I,J; /* indices courants */
http://www.exercices-corriges.com/p/langage-c.html?m=1 34/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
/* Affichage du résultat */
if (PALI)
printf("La chaîne \"%s\" est un palindrome.\n", CH);
else
printf("La chaîne \"%s\" n'est pas un palindrome.\n", CH);
return 0;
}
http://www.exercices-corriges.com/p/langage-c.html?m=1 35/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
return 0;
}
Exercice 6 :
Ecrire un programme en langage C qui lit une chaîne de caractères CH et détermine la longueur de la
chaîne à l'aide d'un pointeur P. Le programme n'utilisera pas de variables numériques.
Solution :
#include <stdio.h>
main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
char *P; /* pointeur d'aide */
12 commentaires:
http://www.exercices-corriges.com/p/langage-c.html?m=1 36/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Réponses
Répondre
lordinateur demande a l'utilisateur dan quelle case se trouve son pion quelle ligne quelle colonne.
on met en place un controle de sasie afinde vérifier la validité des valeurs entrées
0 en haut à gauche
1 en haut a droite
2 en bas à gauche
3 en ba a droite
et on sarrete là
en affichant sur 0 ZERO pour une case vide et un X pour la case ou se trouve le pion
FIN
Répondre
http://www.exercices-corriges.com/p/langage-c.html?m=1 37/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Ecrire un programme en langage C qui lit un caractère au clavier et affiche le caractère ainsi que
son code numérique.
Quelle est le but de mettre [C=getchar()]
Répondre
Réponses
Répondre
http://www.exercices-corriges.com/p/langage-c.html?m=1 38/39
14/6/2014 Exercices corrigés en algorithmique,langage c,langage c++,java,javascript,linux,UML, projet: Langage C
Publier Aperçu
Accueil
École sup.
d'infirmiers
centralesante.tn
http://www.exercices-corriges.com/p/langage-c.html?m=1 39/39