TP Complet
TP Complet
TP Complet
Page 1 sur 41
Exo 3 : Type d’affichage
Ecrire un programme en C pour qu’il déclare deux variables de type entier et affichele
message suivant : « La valeur de 3 plus 4 est égale à 7».
int main(int argc, char *argv[]) {
int a=3;
int b=4;
printf("la valeur 3 plus 4 est egale a 7");
return 0;
}
Exo 4: Permutation
Écrire un programme en C qui lit deux variables entières A et B, puis qui permute les
contenus de ces deux variables
int main(int argc, char *argv[]) {
int A,B,C;
printf("saisir deux entier A et B\n");
scanf("%d %d",&A,&B);
C=A;
A=B;
B=C;
printf("A=%d B=%d",A,B);
return 0;
}
Page 2 sur 41
Exo 5 : Cube
Écrire un programme en C qui lit un nombre entier et affiche le cube de ce nombre.
Proposez deux solutions :
- une solution en utilisation un variable intermédiaire
- une solution en utilisation aucune variable
1. une solution en utilisation un variable intermédiaire
int main(int argc, char *argv[]) {
int nbre , cube;
printf("saisir un entier\n");
scanf("%d",&nbre);
cube=nbre*nbre*nbre;
printf("nbre=%d",cube);
return 0;
}
2. une solution en utilisation aucune variable
int main(int argc, char *argv[]) {
int nbre;
printf("saisir un entier\n");
scanf("%d",&nbre);
nbre*nbre*nbre;
printf("nbre=%d",nbre*nbre*nbre);
return 0;
}
Page 3 sur 41
Exo 6 : Ventre d’un article
Ecrire un programme C qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA,
et qui fournit le prix total TTC correspondant.
int main(int argc, char *argv[]) {
float HT,nA,TVA,TTC;
printf("saisir le prix de HT un article:\n");
scanf("%f",&HT);
printf("saisir le nombre article:\n");
scanf("%f",&nA);
printf("saisir le taux de TVA:\n");
scanf("%f",&TVA);
TTC=(HT+HT*TVA)*nA;
printf("TTC=%.3f",TTC);
return 0;
}
Page 4 sur 41
printf("veuillez saisire minute arrive:");
scanf("%d",&ma);
dh=ha-hd;
dm=ma-md;
if(dm<0)
{
dm=60+dm;
dh=dh-1;
}
if(dh<0)
{
dh=24+dh;
}
printf("dure vol est %d heure %d minute",dh,dm);
return 0;
}
Page 5 sur 41
int nb,prix;
int a=50;
int b=20;
int c=10;
printf("saisir le nombre de photocopies effectuees: ");
scanf("%d",&nb);
if (nb<=10)
{
prix=nb*a;
}else if(nb>10 && nb<=20)
{
prix=(((nb-c)*b)+c*a);
}else
{
prix=((((nb-30)*10)+20*20)+10*50);
}
printf("prix= %d ",prix);
return 0;
}
La recette du brownie dont les ingrédients sont connus pour huit personnes.
Ecrire un programme en C qui va définir la quantité de chaque ingrédient qu'il faudra fournir
comme entrée à l'algorithme qui réalisera le brownie en fonction du nombre de personnes.
Astuce : Pour cela chaque quantité est tout d'abord divisée par huit pour se ramener à une
personne et ensuite multipliée par le nombre de personnes.
Page 6 sur 41
o=nb*0.5;
f=nb*6.25;
b=nb*31.25;
c=nb*20;
n=nb*11.25;
a=nb*3.75;
printf("Sucre vanille: %.2f g\n",sv);
printf("Sucre semoule: %.2f cuillere\n",ss);
printf("oeufs: %.2f\n",o);
printf("Farine: %.2f g\n",f);
printf("Beurre: %.2f g\n",b);
printf("Chocolat noir: %.2f g\n",c);
printf("Noix de pecan: %.2f g\n",n);
printf("Amande en poudre: %.2f g\n",a);
return 0;
}
Page 7 sur 41
printf("etes vous inscrit (0/1):");
scanf("%d",&inscription);
printf("etes vous exonere (0/1):");
scanf("%d",&exoneration);
if (inscription==oui)
{
if(exoneration==oui)
{
printf("inscription graduit\n");
}
else
{
printf("inscription moyenneant 21000 DJF");
}
}
else if ( exoneration==oui)
{
printf("il faut vous inscrire d abord");
}
else
{
printf("il faut payer les frais d inscription");
}
return 0;
}
Exo 2 : Calculatrice(*)
Ecrire un programme CALCULATRICE qui permet de saisir deux entiers A et B et une
opération (+ ou – ou / ou *) et qui affiche le résultat de cette opération entre ces deux entiers.
int main(int argc, char *argv[]) {
char signe;
float A,B,c;
printf("saisir un entier A:");
scanf("%f",&A);
printf("saisir un entier B:");
scanf("%f",&B);
printf("choisir un signe(/,*,-,+) :");
scanf(" %c",&signe);
if (signe=='+')
{
c=A+B ;
printf("votre operation= %.2f +%.2f=%.2f",A,B,c);
Page 8 sur 41
}
else if(signe=='-')
{
c=A-B;
printf("votre operation= %.2f-%.2f=%.2f",A,B,c);
}
else if(signe=='/')
{
c=A/B;
printf("votre operation= %.2f/%.2f=%.2f",A,B,c);
}
else
{
c=A*B;
printf("votre operation= %.2f*%.2f=%.2f",A,B,c);
}
return 0;
}
Page 9 sur 41
Exo 4: Guichet(**)
Écrire un programme en C qui demande le jour et l’heure et détermine si un guichet est
« ouvert » ou « ferme » selon les jours de la semaine (‘samedi’,’dimanche’,
…,’jeudi’,’vendredi’) et les heures de la journée (0 à 24h).Notre guichet est ouvert tous les
jours de 8h à 14h et 15h à 18h sauf le jeudi après-midi et le toute la journée du dimanche.
int main(int argc, char *argv[]) {
char jour[50];
int heure;
printf("veuillez saisir une jour:");
scanf("%s",&jour);
printf("veuillez saisir l heure:");
scanf("%d",&heure);
if (jour=='samedi' || jour=='lundi' || jour=='mardi' || jour=='mercredi' ||
jour=='vendredi')
{
if(heure>=8 && heure<=14 || heure>=15 && heure<=18)
{
printf ("le guiche est ouvert");
}
else
{
printf("guichet ferme");
}
}
else if(jour=='jeudi')
{
if(heure>=8 && heure<14)
{
printf("guichet ouvert");
}
else
{
printf("guichet ferme");
}
}
else
{
printf("guichet ferme");
}
return 0;
Page 10 sur 41
}
Exo 5 : Impôt(**)
Écrire un programme en C qui affiche si un contribuable d’un pays imaginaire est imposable
ou non sachant que :
- Les hommes de plus de 18 ans paient l’impôt,
- Les femmes paient l’impôt si elles ont entre 18 et 35 ans
- Les autres ne paiement pas d’impôt
int main(int argc, char *argv[]) {
int age, oui=1, non=0;
char sexe ;
printf (" veuillez saisir votre age:");
scanf("%d",&age);
printf(" vous saiez un homme(oui ou non) :");
scanf("%c\n",&sexe);
if(sexe=oui && 18<age)
{
printf ("paie les impot");
}
Exo 6 : Photocopie(**)
Un magasin de reprographie facture 50 DJF les dix premières photocopies, 20 DJF les vingt
suivantes et 10 DJF au-delà. Ecrivez un algorithme qui demande à l’utilisateur le nombre de
photocopies effectuées et qui affiche le montant à payer correspondante.
Page 11 sur 41
Cependant, si l’étudiant qui photocopie a une carte du magasin il a 10% de réduction sinon
c’est 5% réduction pour un nombre de pages > 100.
int main(int argc, char *argv[]) {
int nb,prix;
float red;
int a=50;
int b=20;
int c=10;
char carte ;
printf("saisir le nombre de photocopies effectuees: ");
scanf("%d",&nb);
if (nb<=10)
{
prix=nb*a;
}else if(nb>10 && nb<=20)
{
prix=(((nb-c)*b)+c*a);
}else
{
prix=((((nb-30)*10)+20*20)+10*50);
}
printf("Est-que tu a un carte du magasin: ");
scanf("%c\n",&carte);
if(carte='oui'&& nb>100)
{
red=prix*(1-0.1);
printf("le montant a paye est: %.2f fdj\n",red);
}
else if(carte='non'&& nb>100)
{
red=prix*(1-0.05);
printf("le montant a paye est: %.2f fdj\n",red);
}
else
{
printf("le nombre de copie n est pas superieur a 100\n");
}
return 0;
}
Exo 7 : Bissextile(**)
Une année bissextile comprend un jour de plus que les années normales. On dit couramment
que les années bissextiles reviennent tous les quatre ans, ce qui n'est pas tout à fait exact. La
définition complète est la suivante :
Page 12 sur 41
Une année bissextile est divisible par 4 ; si elle est également divisible par 100, alors elle est
aussi divisible par 400.
Écrivez un algorithme qui lit un entier correspondant à une année et affiche un message
approprié en fonction (« L’année 1996 est bissextile », « L’année 2001 n’est pas bissextile »).
int main(int argc, char *argv[]) {
int annee;
printf("veuillez saisir l anne pour verifie si il est bissextile ou pas\n");
scanf("%d",&annee);
if ( annee%4==0 || annee%100==0 && annee%400==0 )
{
printf("l'annee %d est bissextile",annee);
}
Else
{
printf("l'annee %d n'est pas bissextile",annee);
}
return 0;
return 0;
}
return 0;
Page 13 sur 41
}
Page 14 sur 41
Exo 10 : Risque cardiovasculaire (***)
Nous allons réaliser un programme qui calcule un niveau derisque cardiovasculaire simplifié.
- Le niveau de risque de base est de 0
- Il est augmenté de 2 chez les fumeurs
- Il est diminué de 1 chez les personnes faisant du sport
- Il est augmenté de 1 chez les hommes de plus de 50 ans
- Il est augmenté de 1 chez les femmes de plus de 60 ans
- Le risque cardiovasculaire est élevé si le niveau de risque estsupérieur à 1
Faire un programme en C qui demande si l'utilisateur fume, quel estson sexe, son âge et s'il
fait du sport, qui calcule le niveau derisque et indique si celui-ciest élevé ou non
char fumer[4],chaine1[]="oui",chaine2[]="non";
char sport[4],chaine3[]="oui",chaine4[]="non";
char sexe[10],chaine5[]="homme",chaine6[]="femme";
float age,a,b,c,d,total;
printf("est-que vous fumer ? (oui/non)\n");
scanf("%s",fumer);
printf("quel est votre sexe ? (homme/femme)\n");
scanf("%s",sexe);
printf("quel est votre age ?\n");
scanf("%f",&age);
printf("faite vous du sport ? (oui/non)\n");
scanf("%s",sport);
if(strcmp(chaine1,fumer)==0)
{
a=2;
}
else if(strcmp(chaine2,fumer)==0)
{
a=0;
}
if(strcmp(chaine5,sexe)==0 && age>50)
{
b=1;
}
else
{
b=0;
}
Page 15 sur 41
if(strcmp(chaine6,sexe)==0 && age>60)
{
c=1;
}
else
{
c=0;
}
if(strcmp(chaine3,sport)==0)
{
d=-1;
}
else
{
d=0;
}
total=a+b+c+d;
printf("\nLe niveau de risque = %f\n",total);
if(total>1)
{
printf("\nLe risque cardiovasculaire est eleve car le niveau de risque est
superieur a 1");
}
else
{
printf("\nLe risque cardiovasculaire n'est pas eleve car le niveau de risque est
inferieur a 1");
}
return 0;
}
Page 16 sur 41
Pour i allant de 1 à N, par pas de 1, Faire
Somme = Somme + 1
Fin Pour
Afficher Somme
Fin
Complétez ce tableau
Numéro de ligne Valeur de i Valeur de Somme
1 1 0+1=1
2 2 1+1=2
3 3 2+1=3
4 4 3+1=4
Exercice 1 : Manipulation des trois boucles
Ecrire un programme en C qui calculent la somme des N premiers. Utilisez les trois boucles
les unes après les autres.
1ere boucle :
2eme boucle :
Page 17 sur 41
Exercice 2: Somme des Pairs
Ecrire un programme en C qui permet de calculer la somme des entiers pairs inférieurs ou
égaux à N avec N une variable entière saisie par l’utilisateur.
Exemple : N = 4, Somme = 2 + 4 (deux entiers pairs inférieurs ou égaux à N)
int main(int argc, char *argv[]) {
int S,N,i;
printf("saisir un nombre\n");
scanf("%d",&N);
i=0;
S=0;
while(i<=N){
S=S+i;
i=i+2;
}
printf("S=%d",S);
return 0;
}
Page 18 sur 41
printf("%d*%d=%d\n",n,i,n*i);
i++;
}
return 0;
}
Exercice 5: Note
Écrire un programme en C qui lit les notes de N étudiants d’une classe, calcule la moyenne
de
la classe et affiche la plus petite et la plus grande note.
Page 19 sur 41
Exemple : N = 4
18 Moyenne = 12
10 Plus grand note = 18
8 Plus petite note = 8
12
int main(int argc, char *argv[]) {
int N,somme,max,min,moyenne,i,note;
min=0;
i=1;
max=20;
somme=0;
moyenne=0;
printf("moyenne=%d\n",moyenne);
printf("le plus petit notes: %d\n",max);
printf("le plus grand note : %d\n",min);
return 0;
}
Page 20 sur 41
Ecrire un programme en C qui va permettre de saisir les noms des candidats (5 candidats).
Puis le programme va lire le nombre des votants et ensuite va lire pour chaque votant le
nom
du candidat auquel il vote. A la fin, le programme doit afficher le décompte de voix et
afficher
les candidats et leurs voix.
Exemple : 5 candidats : A, B, C, D, E et 6 membres qui vont voter
Voix des membres : Résultats des décomptes
A A : 2 voix
A B : 1 voix
B C : 0 voix
D D : 2 voix
D E : 1 voix
E
int main(int argc, char *argv[]) {
char nom1[50],nom2[50],nom3[50],nom4[50],nom5[50];
int i=0,votant,candidat,voix1=0,voix2=0,voix3=0,voix4=0,voix5=0;
printf("veuillez saisir les noms de 5 candidats\n");
scanf("%s %s %s %s %s",&nom1,&nom2,&nom3,&nom4,&nom5);
printf("veuillez saisir les nombre des votants ");
scanf("%d",&votant);
printf("si tu veux vote %s entre 1\nsi tu veux vote %s entre 2\nsi tu veux vote %s
entre 3\nsi tu veux vote %s entre 4\nsi tu veux vote %s entre 5\
n",nom1,nom2,nom3,nom4,nom5);
while(i<votant)
{
printf("votant %d:",i+1);
scanf("%d",&candidat);
if(candidat==1){
voix1++;
}
else if(candidat==2){
voix2++;
}
else if(candidat==3){
voix3++;
}
else if(candidat==4){
voix4++;
}
else if(candidat==5){
voix5++;
}
i++;
}
printf("\n%d voix pour %s",voix1,nom1);
printf("\n%d voix pour %s",voix2,nom2);
printf("\n%d voix pour %s",voix3,nom3);
printf("\n%d voix pour %s",voix4,nom4);
Page 21 sur 41
printf("\n%d voix pour %s",voix5,nom5);
return 0;
}
Exercice 7: Unicité/Doublons
Écrire un programme qui lit deux entiers A et N. Ensuite le programme lit la liste de N
nombres entiers saisie par l’utilisateur. Le programme doit afficher combien de fois l’entier A
apparaît dans cette liste. S’il apparaît une fois, il affiche « Entier Unique » sinon il affiche
« Entier doublant ».
Exemple : N = 5, A=18
18 18 (2 fois) « Entier Doublons »
18
19
3
3
int main(int argc, char *argv[]) {
int n,i=1,a,nb,b=0;
printf("veuillez saisir N\n");
scanf("%d",&n);
printf("veuillez saisir A\n");
scanf("%d",&a);
printf("veuillez saisir les %d nombre:\n",n);
while (i<=n)
{
scanf("%d",&nb);
if(nb==a)
{
b=b+1;
}
i++;
Page 22 sur 41
}
if(b==1)
{
printf("%d (%d fois) Entier Unique",a,b);
}
else if(b>=2)
{
printf("%d (%d fois) Entier Doublons",a,b);
}
return 0;
}
Page 23 sur 41
somme = somme + hauteur;
if(hmax < hauteur)
{
hmax = hauteur;
moisMax = i+1;
}
else if(hmin > hauteur)
{
hmin = hauteur;
moisMin = i+1;
}
}
moyenne = somme / 12;
printf("La hauteur de pluie la plus forte est %d, et il s'est produit dans le mois
%d",hmax, moisMax);
printf("\nLa hauteur de pluie la plus faible est %d, et il s'est produit dans le mois
%d",hmin, moisMin);
printf("\nLa moyenne des hauteur de pluie vaut: %d",moyenne);
return 0;
}
Page 24 sur 41
printf("Pour N=%d:Un=%d\n",i ,Un);
}
return 0;
}
else if(nb>devi){
printf("trop grand \n");
}
else {
printf("BIEN \n");
}
i=1+i;
}
return 0;
}
Page 25 sur 41
Exercice 11: Pyramide
Ecrire un programme qui permet d’afficher un triangle isocèle formé d’étoiles de N lignes. La
variable N est entière et saisie par l’utilisateur.
Exemple :
N:8
*
*o*
*ooo*
*ooooo*
*ooooooo*
*ooooooooo*
*ooooooooooo*
***************
int main(int argc, char *argv[]) {
int i,j,k,n,h,a;
printf("veuillez saisir un nombre");
scanf("%d",&n);
for(i=0;i<n;i++)
{
if(i!=n-1){
for(j=0;j<n-1-i;j++)
{
printf(" ");
}
for (k=n-1-i;k<n-i;k++)
{
printf("*");
}
Page 26 sur 41
for(j=n-i;j<n;j++)
{
printf("o");
}
for(k=n;k<n-1+i;k++)
{
printf("o");
}
if(i!=0)
{
for(j=n-1+i;j<n+i;j++)
{
printf("*");
}
}else{
for(j=0;j<n+i;j++)
{
printf("*");
}
}
printf("\n");
}
return 0;
}
Page 27 sur 41
{
for(j=1;j<=i;j++)
{
printf("%d",j);
}
printf("\n");
}
return 0;
}
a=(a*a)*pi;
printf("l air du cercle est: %f",a);
return 0;
}
TP : Bonus
Exercice 1 : L’air d’un cercle
Exercice 2 : Permutation
Page 28 sur 41
printf("veuillez saisir une valeurs a \n");
scanf("%d",&a);
printf("veuillez saisir une valeurs b \n");
scanf("%d",&b);
c=a;
a=b;
b=c;
printf("la valeur de a=%d et b=%d ceci est la permutation entre ces deux valeurs",a,b);
return 0;
}
return 0;
}
Exercice 4 : Discriminant
int main(int argc, char *argv[]) {
float a,b,c,d;
printf("veuillez saisir a,b et c telque ax*x+bx+c=0\n");
scanf("%f %f %f",&a,&b,&c);
Page 29 sur 41
d=b*b-4*a*c;
printf("le discriminant de cette equation de seconde degree est: %.2f",d);
return 0;
}
Exercice 5 : L’intervalle
Page 30 sur 41
printf("l'etudiant est admis avec mention tres bien\n");
}
else if(moyenne<16 & moyenne>=14)
{
printf("l'etudiant est admis avec mention bien\n");
}
else if(moyenne<14 & moyenne>=12)
{
printf("l'etudiant est admis avec mention assez bien\n");
}
else if(moyenne<12 & moyenne>=10)
{
printf("l'etudiant est admis avec mention passable\n");
}
else
{
printf("l'etudiant n'est pas admis \n");
}
return 0;
}
Page 31 sur 41
Exercice 8 : Température de l’eau
return 0;
}
Page 32 sur 41
printf("l equation admet 2 solutions X1= %.2f et X2=
%.2f",X1=(-b+sqrt(delta))/2*a,X2=(-b-sqrt(delta))/2*a);
}
else if(delta==0)
{
printf("l equation admet unique solution X0= %.2f\n",X0=(-b/2*a));
}
else
{
printf("l equation n admet pas des solutions");
}
return 0;
}
Exercice 10 : Devinette
Page 33 sur 41
Exercice 11 : Impaire décroissant
int i,a,b,c,somm;
somm=0;
i=1;
printf("entrez deux nombres\n");
scanf("%d %d",&a,&b);
while (i<=a || i<=b)
{
c=a*b;
somm=somm+c;
i=i+1;
}
printf("la somme successives= %d\n",somm);
Page 34 sur 41
return 0;
}
int n,i;
float rac;
printf("veuillez saisir un nombre \n");
scanf("%d",&n);
rac=sqrt(n);
i=2;
while((n%i!=0)&&(i<=rac))
{
i=i+1;
}
if (i>rac)
{
printf("le nombre %d est premier",n);
}
else
{
printf("le nombre %d nest pas premier",n);
}
return 0;
}
Exercice 14 : Factorielle
Page 35 sur 41
{
f=f*i;
i=i+1;
}
printf("le factorielle est %d",f);
return 0;
}
int Decimal;
int Binaire = 2;
printf("Saisir un entier: ");
scanf("%d", &Decimal);
printf("Le binaire de %d vaut: ",Decimal);
while (Binaire <= Decimal)
{Binaire = Binaire*2;}
Binaire = Binaire/2;
while (Binaire != 0)
{ if (Binaire <= Decimal)
{ printf("1");
Decimal = Decimal-Binaire;
}
else
printf("0");
Binaire = Binaire/2;}
return 0;}
Page 36 sur 41
scanf("%d",&N);
int tab[N];
for(i=1;i<=N;i++){
printf("\nRemplir la case %d du tableau: ",i );
scanf("%d",&tab[i]);
}
min=tab[1];
for(i=1;i<=N;i++){
if (tab[i]<min){
min=tab[i];
}
}
for(i=1;i<=N;i++){
if(tab[i]==min){
element++;
}
}
Page 37 sur 41
for(i=1;i<=N;i++){
if ((tab[i]%2)==0)
{
pair++;
}
}
printf("Ce tableau comporte %d element paire",pair);
return 0;
}
Page 38 sur 41
Exercice 19 : Contage de répétition de lettre
Page 39 sur 41
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément %d : ", P1-A);
scanf("%d", P1);
}
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
for (P1=A,P2=A+(N-1); P1<P2; P1++,P2--)
{
AIDE = *P1;
*P1 = *P2;
*P2 = AIDE;
}
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
return 0;
}
Page 40 sur 41
if((tab[i]%2!=0) && (tab[i]%3==0))
printf("%d ",tab[i]);
}
printf("\n");
return 0;
}
Page 41 sur 41