Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Licence : LASTIC
Tuteur : Mme O. Belkahla Driss
#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;
}
b) if - else if - ... - else sans variable d'aide
int A, B, C;
printf("Introduisez trois nombres entiers :");
scanf("%i %i %i", &A, &B, &C);
printf("La valeur maximale est ");
if (A>B && A>C)
printf("%i\n",A);
else if (B>C)
printf("%i\n",B);
else
printf("%i\n",C);
c) opérateurs conditionnels et une variable d'aide MAX
int A, B, C;
int MAX;
printf("Introduisez trois nombres entiers :");
scanf("%i %i %i", &A, &B, &C);
MAX = (A>B) ? A : B;
MAX = (MAX>C) ? MAX : C;
Module : Algorithmique et programmation C
Licence : LASTIC
Tuteur : Mme O. Belkahla Driss
int A, B, C;
printf("Introduisez trois nombres entiers :");
scanf("%i %i %i", &A, &B, &C);
printf("La valeur maximale est %i\n",
(A>((B>C)?B:C)) ? A : ((B>C)?B:C));
Exercice n°2 :
Ecrire un programme 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
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 n°3 :
Ecrire un programme qui calcule la somme de 4 nombres entiers en utilisant la boucle while.
Solution :
#include <stdio.h>
/* introduits au clavier.*/
main()
{
int NOMBRE, SOMME, COMPTEUR;
/* Initialisation des variables */
SOMME = 0;
Module : Algorithmique et programmation C
Licence : LASTIC
Tuteur : Mme O. Belkahla Driss
COMPTEUR = 0;
/* Lecture des données */
while (COMPTEUR < 4)
{
/* Lire la valeur du nombre suivant */
printf("Entrez un nombre entier :");
scanf("%i", &NOMBRE);
/* Ajouter le nombre au résultat */
SOMME += NOMBRE;
/* Incrémenter le compteur */
COMPTEUR++;
}
/* Impression du résultat */
printf("La somme est: %i \n", SOMME);
return 0;
}
Exercice n°4 :
Ecrire un programme 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.
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 */
printf("Nombre de données : ");
scanf("%d", &N);
SOM=0;
PROD=1;
I=1;
while(I<=N)
{
printf("%d. nombre : ", I);
Module : Algorithmique et programmation C
Licence : LASTIC
Tuteur : Mme O. Belkahla Driss
scanf("%d", &NOMB);
SOM += NOMB;
PROD *= NOMB;
I++;
}
printf("La somme des %d nombres est %ld \n", N, SOM);
printf("Le produit des %d nombres est %.0f\n", N, PROD);
printf("La moyenne des %d nombres est %.4f\n", N, (float)SOM/N);
return 0;
}
b) en utilisant do - while,
Remplacez le bloc de traitement (en gras) de (a) par :
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.
Remplacez le bloc de traitement (en gras) de (a) par :
La structure for est la plus compacte et celle qui exprime le mieux l'idée de l'algorithme.
D'autre part, elle permet d'intégrer très confortablement l'initialisation et l'incrémentation des
variables dans la structure.
Exercice n°5 :
Compléter la 'meilleure' des trois versions de l'exercice précédent :
Répéter l'introduction du nombre N jusqu'à ce que N ait une valeur entre 1 et 15.
Quelle structure répétitive utilisez-vous? Pourquoi?
Module : Algorithmique et programmation C
Licence : LASTIC
Tuteur : Mme O. Belkahla Driss
Solution :
Remplacer les lignes
do
{
printf("Nombre de données : ");
scanf("%d", &N);
}
while(N<1 || N>15);
Quelle structure répétitive utilisez-vous? Pourquoi?
Comme il n'y pas d'initialisation ni de réinitialisation de variables, nous avons le choix entre
while et do - while. Comme l'introduction du nombre de données doit toujours être exécuté
(au moins une fois), le plus naturel sera l'utilisation de la structure do - while.