Exercice d’application :
1. Écrire un programme qui permet de saisir deux entiers et affiche leur produit.
#include <stdio.h>
int main() {
int a, b, produit;
printf("Entrez le premier entier : ");
scanf("%d", &a);
printf("Entrez le deuxième entier : ");
scanf("%d", &b);
produit = a * b;
printf("Le produit de %d et %d est : %d\n", a, b, produit);
return 0;
}
2. Modifier le programme ci-dessus pour saisir cette fois-ci deux réels.
#include <stdio.h>
int main() {
float a, b, produit;
printf("Entrez le premier nombre réel : ");
scanf("%f", &a);
printf("Entrez le deuxième nombre réel : ");
scanf("%f", &b);
produit = a * b;
printf("Le produit de %.2f et %.2f est : %.2f\n", a, b, produit);
return 0;
}
3. Écrire un programme qui demande à l’utilisateur de saisir trois nombres x, y et z. Le programme affiche la
moyenne de ces trois nombres dans les cas suivants :
(a) x, y et z sont des entiers.
#include <stdio.h>
int main() {
int x, y, z , moyenne;
printf("Entrez le premier entier : ");
scanf("%d", &x);
printf("Entrez le deuxième entier : ");
scanf("%d", &y);
printf("Entrez le troisième entier : ");
scanf("%d", &z);
moyenne = (x + y + z) / 3;
printf("La moyenne de %d, %d et %d est : %.2f\n", x, y, z, moyenne);
return 0;
}
(b) x, y et z sont des réels
#include <stdio.h>
int main() {
float x, y, z, moyenne;
printf("Entrez le premier nombre réel : ");
scanf("%f", &x);
printf("Entrez le deuxième nombre réel : ");
scanf("%f", &y);
printf("Entrez le troisième nombre réel : ");
scanf("%f", &z);
moyenne = (x + y + z) / 3;
printf("La moyenne de %.2f, %.2f et %.2f est : %.2f\n", x, y, z, moyenne);
return 0;
}
Exercice 1 :
Soient x, y deux entiers. Quelles sont les valeurs de x et y après avoir exécuté
les instructions suivantes dans cet ordre :
x = 3;
y = x + 2;
x = x + 1;
y = x - 4;
#include <stdio.h>
int main() {
int x, y;
x = 3;
y = x + 2;
x = x + 1;
y = x - 4;
printf("x = %d\n", x); // Affiche 4
printf("y = %d\n", y); // Affiche 0
return 0;
}
Exercice 2 :
1. déterminer les valeurs des variables n1 et n2 après exécution des instructions
suivantes :
n1 = 1 ;
n2 = 5 ;
n1 = n2 ;
n2 = n1 ;
#include <stdio.h>
int main() {
int n1, n2;
n1 = 1;
n2 = 5;
n1 = n2;
n2 = n1;
printf("n1 = %d\n", n1); // Affiche 5
printf("n2 = %d\n", n2); // Affiche 5
return 0;
}
2. Même question avec les instructions ci-dessous :
n1 = 1 ;
n2 = 5 ;
n2 = n1 ;
n1 = n2 ;
#include <stdio.h>
int main() {
int n1, n2;
n1 = 1;
n2 = 5;
n2 = n1;
n1 = n2;
printf("n1 = %d\n", n1); // Affiche 1
printf("n2 = %d\n", n2); // Affiche 1
return 0;
}
3. Est ce que les deux programmes ci-dessus permettent l’échangé des valeurs de n1 et n2 ? Si non, proposer une
façon pour remédier à ce problème.
S#include <stdio.h>
int main() {
int n1 = 1 , n2 = 5, temp;
// Échange des valeurs avec une variable temporaire
temp = n1;
n1 = n2;
n2 = temp;
printf("Après échange :\n");
printf("n1 = %d\n", n1); // Affiche 5
printf("n2 = %d\n", n2); // Affiche 1
return 0;
}
Exercice 3 :
En supposant que les variables n, p et q sont de type entier et qu’elles contiennent respectivement les
valeurs 7, 15 et 23, et qu’on désire exécuter les instructions ci-dessous. Soit x une variable entière :
1. x = n + p/q ;
2. x = n + q/ p ;
3. x = (n + q)/p ;
4. x = n + p% q ;
5. x = n + q%p ;
6. x = (n + q)%p ;
7. x = n + p/n + p ;
8. x = (n + p) / (n + p) ;
9. p = p ;
10. x = ++p ;
11. p = p ;
12. q = q ;
13. x = q++ ;
14. q = q ;
a- Écrire un programme en C et valider les résultats trouvés pendant la séance du travail dirige.
#include <stdio.h>
int main() {
int n = 7, p = 15, q = 23;
int x;
printf("Valeurs initiales : n = %d, p = %d, q = %d\n\n", n, p, q);
x = n + p / q;
printf(" x = %d\n", x);
x = n + q / p;
printf(" x = %d\n", x);
x = (n + q) / p;
printf("x = %d\n", x);
x = n + p % q;
printf("x = %d\n", x);
x = n + q % p;
printf("x = %d\n", x);
x = (n + q) % p;
printf(" x = %d\n", x);
x = n + p / n + p;
printf(" x = %d\n", x);
x = (n + p) / (n + p);
printf("x = %d\n", x);
p = p;
printf("p = %d\n", p);
x = ++p;
printf(" x = %d, p = %d\n", x, p);
p = p;
printf(" p = %d\n", p); // p reste 16
q = q;
printf(" q = %d\n", q); // q reste 23
x = q++;
printf("x = %d, q = %d\n", x, q);
q = q;
printf("q = %d\n", q);
return 0;
}
b- Quelle sera la sortie du programme ci-dessus si la variable x est réelle ?
#include <stdio.h>
int main() {
int n = 7, p = 15, q = 23;
float x;
printf("Valeurs initiales : n = %d, p = %d, q = %d\n\n", n, p, q);
x = n + p / q;
printf(" x = %.2f\n", x);
x = n + q / p;
printf(" x = %.2f\n", x);
x = (n + q) / p;
printf("x = %.2f\n", x);
x = n + p % q;
printf("x = %.2f\n", x);
x = n + q % p;
printf("x = %.2f\n", x);
x = (n + q) % p;
printf(" x = %.2f\n", x);
x = n + p / n + p;
printf(" x = %.2f\n", x);
x = (n + p) / (n + p);
printf("x = %.2f\n", x);
p = p;
printf("p = %.2f\n", p);
x = ++p;
printf(" x = %.2f, p = %d\n", x, p);
p = p;
printf(" p = %d\n", p);
q = q;
printf(" q = %d\n", q);
x = q++;
printf("x = %.2f, q = %d\n", x, q);
q = q;
printf("q = %d\n", q);
return 0;
}
c- Quelle sera la sortie du programme ci-dessus si les variables x et n sont de type réel ?
#include <stdio.h>
int main() {
float n = 7;
int p = 15, q = 23;
float x;
printf(" n, p, q);
x = n + p / q;
printf(" x = %.2f\n", x);
x = n + q / p;
printf("x = %.2f\n", x);
x = (n + q) / p;
printf("x = %.2f\n", x);
x = n + p % q;
printf("x = %.2f\n", x);
x = n + q % p;
printf("x = %.2f\n", x);
x = (n + q) - (int)((n + q) / p) * p;
printf("x = %.2f \n", x);
x = n + p / n + p;
printf("x = %.2f\n", x);
x = (n + p) / (n + p);
printf("x = %.2f\n", x);
p = p;
printf("p = %d\n", p);
x = ++p;
printf(" x = %.2f, p = %d\n", x, p);
p = p;
printf("p = %d\n", p);
q = q;
printf("q = %d\n", q);
x = q++;
printf(" x = %.2f, q = %d\n", x, q);
q = q;
printf("q = %d\n", q);
return 0;
}
Exercice 4 :
Soit les instructions suivantes :
int n, p ;
float x ;
n = 10 ; p=7 ;
x = 2.5 ;
Donnez le type et la valeur des expressions suivantes :
1. x+n%p ;
2. x+n/p ;
3. (x + n)/p ;
4. 5.*n ;
5. (n + 1)/n ;
6. (n + 1.0)/n ;
#include <stdio.h>
int main() {
int n, p;
float x;
n = 10;
p = 7;
x = 2.5;
printf("Valeurs initiales : n = %d, p = %d, x = %.2f\n\n", n, p, x);
printf("1. x + n %% p = %.2f (type: float)\n", x + n % p);
printf("2. x + n / p = %.2f (type: float)\n", x + n / p);
printf("3. (x + n) / p = %.2f (type: float)\n", (x + n) / p);
printf("4. 5. * n = %.2f (type: float)\n", 5.0 * n);
printf("5. (n + 1) / n = %d (type: int)\n", (n + 1) / n);
printf("6. (n + 1.0) / n = %.2f (type: float)\n", (n + 1.0) / n);
return 0;
}
Exercice1 :
Écrire un programme en C qui permet de savoir si un entier (entre par l’utilisateur) est un nombre pair
ou impair.
#include <stdio.h>
int main() {
int nombre;
printf("Entrez un entier : ");
scanf("%d", &nombre);
if (nombre % 2 == 0) {
printf("Le nombre %d est pair.\n", nombre);
} else {
printf("Le nombre %d est impair.\n", nombre);
}
return 0;
}
Exercice 2 :
Écrire un programme en C qui simule les quatre opérations de base (+,-,/,x). Le programme demande à
l’utilisateur d’entrer deux nombres réels ainsi que l’opération à effectuer. Le résultat sera affiché par la
suite. Voici un exemple d’affichage :
5 + 6 = 11
#include <stdio.h>
int main() {
float a, b;
char operateur;
printf("Entrez le premier nombre : ");
scanf("%f", &a);
printf("Entrez le deuxieme nombre : ");
scanf("%f", &b);
printf("Entrez l'operation (+, -, *, /) : ");
scanf(" %c", &operateur);
if (operateur == '+') {
printf("%.2f + %.2f = %.2f\n", a, b, a + b);
}
else if (operateur == '-') {
printf("%.2f - %.2f = %.2f\n", a, b, a - b);
}
else if (operateur == '*') {
printf("%.2f * %.2f = %.2f\n", a, b, a * b);
}
else if (operateur == '/') {
if (b != 0)
printf("%.2f / %.2f = %.2f\n", a, b, a / b);
else
printf("Erreur : division par zero !\n");
}
else {
printf("Erreur : operation non reconnue !\n");
}
return 0;
}
Exercice 3 :
L’objectif de cet exercice est d’écrire l’équation de deuxième degré aX2 + bX + c sous la forme de
produit de deux polynômes linéaires.
C’est à dire, il faut trouver, si possible, trois coefficients α, β et γ tels que
aX2 + bX + c = γ(X − α)(X − β).
Pour cela, on a besoin de résoudre l’équation aX2 + bX + c = 0. Voici quelques points à prendre en
considération :
1. La variable X ainsi que les coefficients a, b et c sont des réels,
2. Essayer d’imaginer les différentes situations pour a, b et c,
3. Les coefficients a, b et c sont entrés par l’utilisateur au moment de l’exécution,4. Si la solution est
impossible dans l’ensemble des réels, un message ”Impossible de transformer l’équation en produit de
deux polynômes linéaires” devra s’afficher à l’utilisateur,
5. N’oublier pas d’ajouter des commentaires qui expliquent votre code.
#include <stdio.h>
#include <math.h> // pour sqrt()
int main() {
float a, b, c;
float delta, alpha, beta;
// Lecture des coefficients
printf("Entrez les coefficients a, b et c de l'equation aX^2 + bX + c :\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
// Si a == 0, ce n'est pas une équation du second degré
if (a == 0) {
printf("Ce n'est pas une équation du second degré (a ne doit pas être nul).\n");
return 1;
}
// Calcul du discriminant
delta = b * b - (4 * a * c);
// Traitement selon la valeur de delta
if (delta < 0) {
printf("Impossible de transformer l’equation en produit de deux polynomes lineaires (pas de racines
reelles).\n");
} else {
// Calcul des racines
alpha = (-b - sqrt(delta)) / (2 * a);
beta = (-b + sqrt(delta)) / (2 * a);
printf("Forme factorisee : %.2f(X - %.2f)(X - %.2f)\n", a, alpha, beta);
}
return 0;
}
Exercice 4 :
Le magasin SADOMA-69 solde ses produits pendant cette semaine. Pour un achat de 500 dh et plus
(hors taxes), il rembourse 30% du prix HT. De 200 dh et plus mais moins de 500 dh, il rembourse 25%
du prix HT. De plus de 100 dh et moins de 200 dh, il rembourse 10% du prix HT. De moins de 100 dh, il
ne rembourse rien. La taxe sur tout achat est limitée à 20%.
Ecrire un programme qui lit un prix HT et qui affiche :
— le prix HT,
— la taxe,
— le rabais,
— le prix final à payer par le client.
#include <stdio.h>
int main() {
float prixHT, taxe, rabais, prixFinal;
// Lire le prix hors taxe
printf("Entrez le prix HT de l'article : ");
scanf("%f", &prixHT);
// Calcul de la taxe (20% du prix HT)
taxe = prixHT * 0.20;
// Calcul du rabais selon les tranches
if (prixHT >= 500) {
rabais = prixHT * 0.30;
} else if (prixHT >= 200) {
rabais = prixHT * 0.25;
} else if (prixHT > 100) {
rabais = prixHT * 0.10;
} else {
rabais = 0;
}
// Calcul du prix final
prixFinal = prixHT + taxe - rabais;
// Affichage des résultats
printf("Prix HT : %.2f dh\n", prixHT);
printf("Taxe (20%%) : %.2f dh\n", taxe);
printf("Rabais : %.2f dh\n", rabais);
printf("Prix final : %.2f dh\n", prixFinal);
return 0;
}
Exercice 3
Un transporteur routier vous demande d’écrire un algorithme qui lui permet de calculer les frais de
transport d’un colis qu’il véhicule sachant que :
• Le prix de base applicable à tout colis est de 50 Dh.
• Si le colis pèse plus de 60 Kg, un surplus de 10 Dh par kilo supplémentaire est ajouté.
• Si une des dimensions (largeur, longueur, hauteur) du colis dépasse 1 mètre, 20 Dh sont perçus.
• 10% du total obtenu sont ajoutés pour tout trajet supérieur à 100 km.
#include <stdio.h>
int main() {
float largeur, longueur, hauteur, poids, distance;
float prixBase = 50.0, fraisPoids = 0, fraisDimensions = 0, fraisDistance = 0, prixTotal;
// Lire les dimensions du colis (largeur, longueur, hauteur)
printf("Entrez la largeur du colis (en mètres) : ");
scanf("%f", &largeur);
printf("Entrez la longueur du colis (en mètres) : ");
scanf("%f", &longueur);
printf("Entrez la hauteur du colis (en mètres) : ");
scanf("%f", &hauteur);
// Lire le poids du colis (en kilogrammes)
printf("Entrez le poids du colis (en kg) : ");
scanf("%f", &poids);
// Lire la distance à parcourir (en kilomètres)
printf("Entrez la distance à parcourir (en km) : ");
scanf("%f", &distance);
// Calcul du surplus de poids
if (poids > 60) {
fraisPoids = (poids - 60) * 10;
}
// Calcul des frais pour les dimensions
if (largeur > 1 || longueur > 1 || hauteur > 1) {
fraisDimensions = 20;
}
// Calcul des frais pour la distance
if (distance > 100) {
fraisDistance = (prixBase + fraisPoids + fraisDimensions) * 0.10;
}
prixTotal = prixBase + fraisPoids + fraisDimensions + fraisDistance;
// Affichage du résultat
printf("Prix de base : %.2f Dh\n", prixBase);
printf("Frais de poids : %.2f Dh\n", fraisPoids);
printf("Frais de dimensions: %.2f Dh\n", fraisDimensions);
printf("Frais de distance : %.2f Dh\n", fraisDistance);
printf("Prix total à payer : %.2f Dh\n", prixTotal);
return 0;
}
Exercice 4
Quel est l’objectif de l’algorithme ci-dessous :
Variables n : Entier
a, résultat, temp : Réel
Début
Ecrire( ” Entrer la valeur de a ”) :
Lire(a)
Ecrire( ” Entrer la valeur de n ”) :
Lire(n)
temp ← 1
resultat ← a
Tant que (n = 1)
Si (n pair) Alors
resultat ← resultat ∗ resultat
n ← n/2
Sinon
temp ← temp ∗ resultat
n←n−1
FinSi
Fin Tant que
resultat ← resultat ∗ temp
Ecrire( ” La valeur du resultat vaut : ”, resultat)
Fin
#include <stdio.h>
int main() {
int n;
float a, resultat, temp;
// Lecture des valeurs
printf("Entrer la valeur de a : ");
scanf("%f", &a);
printf("Entrer la valeur de n : ");
scanf("%d", &n);
temp = 1;
resultat = a;
while (n != 1) {
if (n % 2 == 0) {
resultat = resultat * resultat;
n = n / 2;
} else {
temp = temp * resultat;
n = n - 1;
}}
resultat = resultat * temp;
printf("La valeur du resultat vaut : %.2f\n", resultat);
return 0;
}
Exercice 5
1. Écrire un Programme qui demande un nombre de départ, et qui ensuite affiche les 20 nombres
impairs suivants.
.
#include <stdio.h>
int main() {
int nombre, compteur = 0;
// Demander le nombre de départ
printf("Entrez un nombre de départ : ");
scanf("%d", &nombre);
// Commencer à chercher les 20 nombres impairs suivants
nombre++; // On commence après le nombre donné
printf("Les 20 nombres impairs suivants sont :\n");
while (compteur < 20) {
if (nombre % 2 != 0) { // Vérifie si le nombre est impair
printf("%d ", nombre);
compteur++;
}
nombre++;
}
printf("\n");
return 0;
}
3. Calculer le produit de deux nombres de la classe NombreEntier de valeur positive, sans faire appel à
l’opérateur de multiplication.
int main()
{
int m, n , i, p;
printf("Entrer une valeur positive n = ");
scanf("%d", &n);
printf("Entrer une valeur positive m = ");
scanf("%d", &m);
if ( n >= 0 && m >= 0){
p = 0;
for(i = 1; i <= m ; i++)
p = p + n;
printf("%d * %d = %d ",n,m,p);
}else{
printf("les deux valeurs saisies doivent être > = 0 ");
}
return 0 ;
}
4. Ecrire un algorithme qui évalue la table de multiplication de chacun des entiers 1, 2, ··· , 3, 9 et qui
l’affiche par la suite
#include<stdio.h>
int main()
{
int i,j;
for (i=1 ; i<= 20; i++){
for (j=1 ; j<= 20; j++){
printf("%d * %d = %d\n ", i,j, i*j);
}
printf("\n\n");
}
return 0;
}
Exercice 1
Écrire un programme qui demande un nombre de départ, et qui ensuite affiche les 20 nombres pairs
suivants.
#include <stdio.h>
int main() {
// Partie 1 : Affichage des 20 nombres impairs suivants
int nombre;
printf("Entrez un nombre de départ : ");
scanf("%d", &nombre);
if (nombre % 2 == 0) {
nombre++; // Si nombre est pair, on prend le premier impair suivant
}
printf("Les 20 nombres impairs suivants sont :\n");
for (int i = 0; i < 20; i++) {
printf("%d ", nombre);
nombre += 2;
}
printf("\n");
return 0;
}