Les
outils de base de la programmation en langage C
Exercice 1 :
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
Correction exercice 1 :
#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.
Correction exercice 2 :
#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)
Correction exercice 3 :
#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.
Correction exercice 4 :
#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.
Coorection exercice 5 :
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.
Correction exercice 6 :
#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.
Crrection exercice 7 :
#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;
}
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
Correction exercice 1 :
#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.
Correction exercice 2 :
#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)
Correction exercice 3 :
#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.
Correction exercice 4 :
#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.
Coorection exercice 5 :
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.
Correction exercice 6 :
#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.
Crrection exercice 7 :
#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;
}
nbsp; &w " ; & �V o� .
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.
Correction exercice 6 :
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
*/
/* Saisie des données */
printf("Introduisez la première chaîne de caractères : ");
gets(CH1);
printf("Introduisez la deuxième chaîne de caractères : ");
gets(CH2);
/* 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;
}
b) Utiliser uniquement les fonctions gets et puts.
#include <stdio.h>
main()
{
/* Déclarations */
char CH1[100], CH2[100]; /* chaînes données */
char CH3[100]=""; /* chaîne résultat
*/
int L1,L2; /* longueurs de CH1 et CH2 */
int I; /* indice courant dans CH1 et CH2 */
int J; /* indice courant dans CH3
*/
/* Saisie des données */
puts("Introduisez la première chaîne de caractères : ");
gets(CH1);
puts("Introduisez la deuxième chaîne de caractères : ");
gets(CH2);
/* Détermination les longueurs de CH1 et CH2 */
for (L1=0; CH1[L1]; L1++) ;
for (L2=0; CH2[L2]; L2++) ;
/* Copier la première moitié de CH1 vers CH3 */
for (I=0 ; I<(L1/2) ; I++)
CH3[I]=CH1[I];
/* Copier la première moitié de CH2 vers CH3 */
J=I;
for (I=0 ; I<(L2/2) ; I++)
{
CH3[J]=CH2[I];
J++;
}
/* Terminer la chaîne CH3 */
CH3[J]='\0';
/* Affichage du résultat */
puts("Chaîne résultat : ");
puts(CH3);
return 0;
}