TP Complet

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 41

TP N°1 – Manipulation des variables

Exo 1: Tourner un algorithme à la main

Ecrire le programme C correspondant à cet algorithme.

int main(int argc, char *argv[]) {


int a,b;
a=15;
b=23;
a=b;
a=15;
b=a;
a=a+1;
b=b-3;
b=a%3;
return 0;
}

Exo 2 : Nature des donnés et types de variables


Pour chaque objet de la liste suivante, définir sa nature, l’unité dans laquelle on pourrait
l’exprimer, la gamme des valeurs attendues et le type de variable qui pourrait le
représenter :
- la taille d’un individu
- son âge
- son sexe
- une couleur
Choisissez un élément de la liste et écrivez un programme en C permettant de déclarer la
variable, d’affecter une valeur à la variable et de l’afficher la valeur lue
int main(int argc, char *argv[]) {
float taille;
int age;
char sexe[50], couleur[50];
printf("saisir votre taille, age, sexe et votre couleur\n");
scanf("%f %d %s %s",&taille,&age,&sexe,&couleur);
printf("taille=%.2f, age=%d, sexe=%s, couleur=%s",taille,age,sexe,couleur);
return 0;
}

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;
}

Exo 7 : Durée d’un vol


Ecrire un programme en C qui fournit la durée de vol en heure et minute connaissant l'heure
de départ et l'heure d'arrivée en heure et minute
Exemple
H1 : 19h00min H2 : 22h30min  Durée : 3h30min
- On considère que le départ et l'arrivé ont lieu le même jour
- On suppose que la durée de vol est inférieure à 24 heures mais peut avoir lieu le lendemain.
int main(int argc, char *argv[]) {
int ha,ma,hd,md,dh,dm;
printf("veuillez saisire heure de depart:");
scanf("%d",&hd);
printf("veuillez saisire minute de depart:");
scanf("%d",&md);
printf("veuillez saisire heure arrive:");
scanf("%d",&ha);

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;
}

Exo 8 : Conversion de distance


Ecrire un programme qui lit le nombre de kilomètre parcourue et le converti en mètre.
Afficher le résultat de la conversion.
int main(int argc, char *argv[]) {
int np,C;
printf("saisir le nombre kilometre parcourue:");
scanf("%d",&np);
C=np*1000;
printf("convertion kilometre en metre=%d",C);
return 0;
}

Exo 9 : Coût 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 programme qui demande à l’utilisateur le nombre de
photocopies effectuées et qui affiche le montant à payer correspondante.
int main(int argc, char *argv[]) {

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;
}

Exo 10 : Faire un chocolat BROWNIE


Recette pour une 1 personne
Sucre vanille 37,5g
Sucre semoule 1 cuillère
Œufs 4
Farine 50g
Beurre 250g
Chocolat noir 160g
Noix de pecan 90g
Amande en poudre 30g

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.

int main(int argc, char *argv[]) {


float nb,sv,ss,o,f,b,c,n,a;
printf("veuillez entre le nombre de personne pour savoir la quantite des ingredients\
n");
scanf("%f",&nb);
sv=nb*4.6875;
ss=nb*0.125;

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;
}

TP N°2 – Manipulation des conditions


Exo 1: Inscription à l’université(*)
Ecrire « Etes-vous inscrit ? (O/N) »
Lire Inscription
Ecrire « Etes-vous exonéré ? (O/N) »
Lire Exonération
Si non (Inscription = 1) ou (Exonération=1) alors
Si (Exonération = 1) alors Ecrire « Inscription gratuite »
Sinon Ecrire « Inscription moyennant 21 000 DJF »
Fin Si
Fin Si
Sinon
Si (Exonération = 1) alors Ecrire « Il faut vous inscrire d’abord »
Sinon Ecrire « Il faut payer les frais d’inscription »
Fin Si
Fin Si
Ecrire le programme C correspondant à cet algorithme.
int main(int argc, char *argv[]) {
int oui=1, non=0;
int inscription,exoneration;
printf("si tu veux dit oui il faut tape 1 sionn 0\n");

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;
}

Exo 3 : Positif ou Négatif (*)


Ecrire un programme en C qui lit deux nombres entiers A et B et affiche si le résultat du
produit de ces deux nombres est négatif ou positif.
int main(int argc, char *argv[]) {
int A,B,produit;
printf("veuillez entre un entier A :\n");
scanf("%d",&A);
printf("veuillez entre un autre entier B :\n");
scanf("%d",&B);
if(A<0 && B<0 || A>0 && B>0)
{
printf("leur produit est positif\n");
produit=A*B;
}else if(A<0 || B<0)
{
printf("leur produit est negative\n");
produit=A*B;
}
printf("produit=%d",produit);
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");
}

else if(sexe=non && 18<age<35)


{
printf ("paie les impot");
}
else if(sexe=non && age>35 || age<18)
{
printf ("tu n'est dans le condition des impot");
}
return 0;
}

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;
}

Exo 8 : Salaire d’un employé (**)


Ecrire un programme en C qui saisit le nombre d’heures travaillés par un employé dans le
mois, le taux horaire et il affiche la paie de son salaire. Si l’employé à dépasser les 160h par
mois, le taux horaire est multiplié 1,5 fois pour les heures en plus.
int main(int argc, char *argv[]) {
float nht,TH,salaire;
printf("entrez les nombres des heures de travaille :");
scanf("%f",&nht);
printf("entrez le taux horraire:");
scanf("%f",&TH);
if (nht>160)
{
salaire=(160*TH+(nht-160)*TH*1.5);
}
else
{
salaire=TH*nht;
}
printf("votre salaire est%.2f fdj\n",salaire);

return 0;

Page 13 sur 41
}

Exo 9 : ADN et gêne(***)


Écrire un programme en C qui demande à l'utilisateur d'entrer uneséquence d'ADN, et qui
affiche «C'est un gène» si celle-cicorrespond à un gène, et «Ce n'est pas un gène» dans le cas
contraire.
NB : On considérera qu'une séquence est un gène si celle-ci commence par un codon
méthionine (ATG) et se termine parun codon STOP (TAA, TAG, TGA).
char codon1[4],chaine1[]="ATG";
char codon6[4],chaine2[]="TAA",chaine3[]="TAG",chaine4[]="TGA";
char codon2[4],codon3[4],codon4[4],codon5[4];
printf("veuillez saisir 6 codant adenique?\n");
scanf("%s %s %s %s %s %s",codon1,codon2,codon3,codon4,codon5,codon6);
printf("\nsequence d'ADN: %s %s %s %s %s %s\n\
n",codon1,codon2,codon3,codon4,codon5,codon6);
if(strcmp(chaine1,codon1)==0)
{
if(strcmp(chaine2,codon6)==0 || strcmp(chaine3,codon6)==0 ||
strcmp(chaine4,codon6)==0 )
{
printf("c'est un gene");
}
else
{
printf("c'est n'est pas un gene");
}
}
else
{
printf("c'est n'est pas un gene");
}
return 0;
}

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;
}

TP4 – Boucles et Itérations


Exercice 0 : Tournez l’algorithme à la main

Soit l’algorithme suivant :


Algo SOMME
i,somme : Entier
Début
Somme=0
N=4

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 :

int main(int argc, char *argv[]) {


int S,N,i;
printf("saisir la nombre\n");
scanf("%d",&N);
i=0;
S=0;
while (i<=N){
S=S+i;
i=i+1;
}
printf("Somme de N premier=%d",S);
return 0;
}

2eme boucle :

int main(int argc, char *argv[]) {


int S,N,i;
printf("saisir la nombre\n");
scanf("%d",&N);
S=0;
for (i=0;i<=N;i++){
S=S+i;
}
printf("Somme de N premier=%d",S);
return 0;
}

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;
}

Exercice 3: Table de multiplication


Ecrire un programme en C qui m’écrit la table de multiplication d’un nombre N.
Exemple : N = 2
1*2 = 2
2*2 = 4

9*2=18
10*2=20
int main(int argc, char *argv[]) {
int n,i,p;
printf("veuilleur entre un entier\n");
scanf("%d",&n);
i=0;
while (i<=10){

Page 18 sur 41
printf("%d*%d=%d\n",n,i,n*i);
i++;
}
return 0;
}

Exercice 4: Capital Epargne


On place un capital de 500DJF sur un compte rémunéré à 3% par an. Ecrire un programme
en
C qui permet de calculer le nombre d'années au bout desquelles le capital sera doublé.
int main(int argc, char *argv[]) {
double c,an;
c=500;
an=0;
while(c<=1000)
{
c=c+c*0.03;
an=an+1;
}
printf("le capitale va double dans %.2f ans",an);
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("saisir les nombres des eleves:");


scanf("%d",&N);
while(i<=N){
printf("saisir les notes des eleves %d:",i);
scanf("%d",&note);
somme=somme+note;
if(note>=min)
{
min=note;
}
if(max>=note)
{
max=note;
}
i++;
moyenne=somme/N;
}

printf("moyenne=%d\n",moyenne);
printf("le plus petit notes: %d\n",max);
printf("le plus grand note : %d\n",min);
return 0;
}

Exercice 6: Vote et Election

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;
}

Exercice 8: Hauteur de la pluie


Écrire un programme qui lit l’hauteur de la pluie pour chaque mois de l’année (une année
comporte 12 mois). Puis le programme affiche :
- la hauteur de pluie la plus forte ainsi que le numéro du mois où cela s’est produit,
- la hauteur de pluie la plus faible ainsi que le numéro du mois où cela s’est produit
- la moyenne des hauteurs de pluie tombées par mois.
NB : On suppose que les hauteurs de pluie tombée sont différentes chaque mois et l’on ne
vérifie pas ce fait.
Astuce : Lire une première hauteur, et initialiser les différentes variables en conséquence
(hauteur et mois min., hauteur et mois max., somme des hauteurs). Lire ensuite les hauteurs
suivantes, et mettre les variables à jour au fur et à mesure.
Enfin calculer la moyenne et afficher les résultats.
int main(int argc, char *argv[]) {
int i = 0, hauteur = 0, hmax = 0, hmin, moisMax = 0, moisMin = 0, somme = 0,
moyenne = 0;

printf("Quel est l'hauteur de pluis du %dere mois: ", i+1);


scanf("%d",&hauteur);
hmin = hauteur;
for(i = 1; i < 12; i++)
{
printf("Quel est l'hauteur de pluis du %deme mois: ", i+1);
scanf("%d",&hauteur);

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;
}

Exercice 9: Suite de fibonacci


Soit la suite suivante
u0=u1=1
un = un-2 + un-1 pour n > 1
Ecrire un programme qui calcule les N premiers termes de la suite.
Exemple : N = 3
U2=1 + 1=2
U3= 2+1= 3
int main(int argc, char *argv[]) {
int N, i, Un = 0, Ux = 1, Uy = 1;
printf("Saisir un nombre entier: ");
scanf("%d",&N);
for(i = 2; i <= N; i++)
{
Un = Ux + Uy;
Ux = Uy;
Uy = Un;

Page 24 sur 41
printf("Pour N=%d:Un=%d\n",i ,Un);
}

return 0;
}

Exercice 10: Devinette


Ecrivez un programme qui choisit un nombre entier mystère au hasard entre 0 et 100 (par
une instruction (rand*100) puis fait deviner ce nombre à un joueur, en lui répondant si le
nombre qu’il propose est trop petit ou trop grand, jusqu’à ce que le joueur trouve la valeur
mystère
int main(int argc, char *argv[]) {
int rand,nb,devi,i;
rand=50;
devi=rand;
i=1;
while (nb!=devi){
printf("entrer un nombre \n");
scanf("%d",&nb);
if(nb<devi){
printf("trop petit \n");
}

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;
}

Exercice 12: Triangle de nombre


Ecrire un programme qui imprime pour N donné ceci :
Exemple : N = 5
1
12
123
1234
12345

int main(int argc, char *argv[]) {


int i,j,nbre;
printf("veuillez saisir un nombre:");
scanf("%d",&nbre);
for(i=1;i<=nbre;i++)

Page 27 sur 41
{
for(j=1;j<=i;j++)
{
printf("%d",j);
}
printf("\n");
}
return 0;
}

int main(int argc, char *argv[]) {


float a;
#define pi 3.1458;
printf("veuillez saisir le rayon du cercle\n");
scanf("%f",&a);

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

int main(int argc, char *argv[]) {


int a,b,c;

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;
}

Exercice 3 : Produit de scalaire et la norme de vecteur

int main(int argc, char *argv[]) {


float a,b,c,x,y,z,n,p;
printf("veuillez saisir a,b,c telque u(a,b,c)\n");
scanf("%f %f %f",&a,&b,&c);
printf("veuillez saisir x,y,z telque v(x,y,z)\n");
scanf("%f %f %f",&x,&y,&z);
n=sqrt(x*x+y*y+z*z);
p=(a*x+b*y+c*z);
printf("le norme de vecteur u et v est: %f\nle produit scalaire du vecteur u et v est: %f",n,p);

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

int main(int argc, char *argv[]) {


int a,b,c;
printf("veuillez saisir les bornes de l intervale a et b [a;b] \nil faut que a est toujour plus
petit que b:\n");
scanf("%d %d",&a,&b);
printf("veuillez saisir un nombre :\n");
scanf("%d",&c);
if(a<=c && b>=c)
{
printf("%d appartient a l intervalle [ %d ; %d ]",c,a,b);
}
else {
printf("%d n appartient pas a l intervalle [ %d ; %d ]",c,a,b);
}
return 0;
}

Exercice 6 : Mention d’amis

int main(int argc, char *argv[]) {


float moyenne;
printf("entrez la moyenne generale de l etudient entre 0 et 20\n");
scanf("%f",&moyenne);
if(moyenne>=16 & moyenne<=20)
{

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;
}

Exercice 7 : Opération arithmétique

int main(int argc, char *argv[]) {


int nb1,nb2;
char operateur;
printf("entrez un operateur \n");
scanf("%c",&operateur);
printf("entrez deux nombre \n");
scanf("%d %d",&nb1,&nb2);
if (operateur=='+')
{
printf("la somme est = %d ",nb1+nb2);
}else
{
printf("veuillez saisir une autre operateur");
}
return 0;
}

Page 31 sur 41
Exercice 8 : Température de l’eau

int main(int argc, char *argv[]) {


int N;
printf("entrer la valeur de la temperature de l eau:");
scanf("%d",&N);
if (N<0)
{
printf("l eau est glace");
}
else if (N>0 && N<100)
{
printf("l eau est liquide");
}
else
{
printf(" l eau est vapeur");
}

return 0;
}

Exercice 9 : Discriminant avec les solution

int main(int argc, char *argv[]) {


float X1,X2,X0,a,b,c,delta;
printf("veuillez entrer les parametres de l equation a b c \n");
scanf("%f %f %f",&a,&b,&c);
delta=b*b-4*a*c;
if(delta>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

int main(int argc, char *argv[]) {


char devinette;
printf("saisir la variable de la devinette\n");
scanf("%c",&devinette);
if(devinette=='r' || devinette=='R' )
{
printf("ROUGE");
}
else if(devinette=='v' || devinette=='V')
{
printf("VERT");
}
else if (devinette=='b'|| devinette=='B')
{
printf("BLEU");
}
else
{
printf("NOIR");
}
return 0;
}

Page 33 sur 41
Exercice 11 : Impaire décroissant

int main(int argc, char *argv[]) {


int N,s,i;
printf("veuillez saisir un nombre:");
scanf("%d",&N);
s=N+1;
printf("les %d premiers nombre impaires sont: \n",N);
for(i=0;i<N;i++)
{s=s-1;
if (s%2!=0)
{ printf("%d \n",s);}}
return 0;
}

Exercice 12 : Produit somme successives

int main(int argc, char *argv[]) {

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;
}

Exercice 13 : Nombre premier

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

int main(int argc, char *argv[]) {


int nb,f,i;
printf("veuillez saisir un nombre:");
scanf("%d",&nb);
f=1;
i=1;
while(i<=nb)

Page 35 sur 41
{
f=f*i;
i=i+1;
}
printf("le factorielle est %d",f);
return 0;
}

Exercice 15 : Decimal en Binaire

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;}

Exercice 16 : Tableau de nombre fois de répétition

int main(int argc, char *argv[]) {


int N,i,element=0,min;
printf("\nEntrer la taille du tableau: ");

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++;
}
}

printf("\nla plus petite valeur de ce tableau est %d ",min);


printf("\n\nIl se repete %d fois \n",element);
return 0;
}

Exercice 17 : Tableau qui conte le nombre élément paire

int main(int argc, char *argv[]) {


int N,i,pair=0;
printf("Entrer la taille du tableau\n");
scanf("%d",&N);
int tab[N];
for(i=1;i<=N;i++){
printf("Remplir la case %d du tableau\n",i );
scanf("%d",&tab[i]);
}

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;
}

Exercice 18 : Tableau de comparaison avec sa moyenne

int main(int argc, char *argv[]) {


int N,i,element=0;
float moyenne,somme=0;
printf("Entrer la taille du tableau\n");
scanf("%d",&N);
int tab[N];
for(i=1;i<=N;i++){
printf("Remplir la case %d du tableau:",i );
scanf("%d",&tab[i]);
somme=somme +tab[i];
}
moyenne=(somme/N);
for(i=1;i<=N;i++){
if (tab[i]>=moyenne){
element++;
}
}
printf("la moyenne de ce tableau est %0.2f \n",moyenne);
printf("il comporte %d element superieur ou egale a la moyenne\n",element);
return 0;
}

Page 38 sur 41
Exercice 19 : Contage de répétition de lettre

int main(int argc, char *argv[]) {


char chaine[100], lettre = 0;
int compteur = 0, i;

printf("\nSaisir la lettre a rechercher: ");


scanf("%c",&lettre);
printf("\nSaisir votre chaine de caractere: ");
scanf("%s",chaine);

for (i = 0 ; i < 100 ; i++)


{
if (chaine[i] == lettre)
compteur++;
}
printf("\nLa lettre %c se repete %d fois dans la chaine\n", lettre, compteur);
return 0;
}

Exercice 20 : Tableau miroir

int main(int argc, char *argv[]) {


int A[50];
int N;
int AIDE;
int *P1, *P2;
printf("Dimension du tableau (max.50) : ");

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;
}

Exercice 21 : Impaire divisible par 3

int main(int argc, char *argv[]) {


int taille, i;

printf("\nSaisir la taille de votre tableau: ");


scanf("%d",&taille);
int tab[taille];

for(i = 0; i < taille; i++)


{printf("\nRemplir la case numero %d: ",i+1);
scanf("%d",&tab[i]);}
printf("\nLes nombres impaire divisile par trois sont: ");
for(i = 0; i < taille; i++)
{

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

Vous aimerez peut-être aussi