Dans ces exercices de programmation, nous nous concentrerons sur les bases de la programmation. Après avoir terminé ces exercices, vous maîtriserez la structure d'un programme, les entrées/sorties, les variables, les opérateurs arithmétiques et les fonctions mathématiques. Tous les problèmes sont résolus en C, Python et Java.
Exercice 1 — Somme de deux nombres
Somme de deux entiers
Écrire un programme qui lit deux entiers saisis par l'utilisateur, puis affiche leur somme.
- Déclarer deux variables entières
nb1etnb2, ainsi qu'une variablesommepour stocker le résultat. - Lire les deux valeurs depuis l'entrée standard (
scanfen C,input()en Python,Scanneren Java). - Calculer :
somme = nb1 + nb2. - Afficher le résultat avec
printf/print/System.out.println.
#include <stdio.h>
int main()
{
int nb1, nb2, somme;
printf("Saisir le premier nombre : ");
scanf("%d", &nb1);
printf("Saisir le deuxième nombre : ");
scanf("%d", &nb2);
somme = nb1 + nb2;
printf("La somme = %d\n", somme);
return 0;
}nb1 = int(input('Saisir le premier nombre : '))
nb2 = int(input('Saisir le deuxième nombre : '))
somme = nb1 + nb2
print("La somme =", somme)import java.util.Scanner;
public class Somme {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir le premier nombre : ");
int nb1 = clavier.nextInt();
System.out.print("Saisir le deuxième nombre : ");
int nb2 = clavier.nextInt();
int somme = nb1 + nb2;
System.out.println("La somme = " + somme);
clavier.close();
}
}Saisir le premier nombre : 7 Saisir le deuxième nombre : 8 La somme = 15
7 8
La somme = 15
Exercice 2 — Périmètre d'un rectangle
Calcul du périmètre d'un rectangle
Écrire un programme qui lit la longueur et la largeur d'un rectangle, puis calcule son périmètre selon la formule :
$$\text{périmètre} = 2 \times (\text{longueur} + \text{largeur})$$
- Utiliser des variables
floatpour gérer les valeurs décimales. - Appliquer la formule
perimetre = 2 * (longueur + largeur).
#include <stdio.h>
int main()
{
float longueur, largeur, perimetre;
printf("Saisir la longueur : ");
scanf("%f", &longueur);
printf("Saisir la largeur : ");
scanf("%f", &largeur);
perimetre = 2 * (longueur + largeur);
printf("Le périmètre = %.2f\n", perimetre);
return 0;
}longueur = float(input('Saisir la longueur : '))
largeur = float(input('Saisir la largeur : '))
perimetre = 2 * (longueur + largeur)
print(f"Le périmètre = {perimetre}")import java.util.Scanner;
public class Perimetre {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir la longueur : ");
float longueur = clavier.nextFloat();
System.out.print("Saisir la largeur : ");
float largeur = clavier.nextFloat();
float perimetre = 2 * (longueur + largeur);
System.out.println("Le périmètre = " + perimetre);
clavier.close();
}
}Saisir la longueur : 5 Saisir la largeur : 10 Le périmètre = 30.00
5 10
Le périmètre = 30.00
Exercice 3 — Conversion cm → m et km
Conversion de centimètres en mètres et kilomètres
Écrire un programme qui lit une longueur en centimètres et la convertit en mètres et kilomètres.
- Formules :
m = cm / 100etkm = cm / 100 000. - Utiliser
floatpour obtenir des résultats décimaux précis.
#include <stdio.h>
int main()
{
float cm, metre, km;
printf("Saisir la longueur en centimètres : ");
scanf("%f", &cm);
metre = cm / 100.0f;
km = cm / 100000.0f;
printf("Longueur en mètres = %.2f m\n", metre);
printf("Longueur en kilomètres = %.5f km\n", km);
return 0;
}cm = float(input('Saisir la longueur en centimètres : '))
metre = cm / 100.0
km = cm / 100_000.0
print(f"Longueur en mètres = {metre} m")
print(f"Longueur en kilomètres = {km} km")import java.util.Scanner;
public class ConversionLongueur {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir la longueur en centimètres : ");
float cm = clavier.nextFloat();
float metre = cm / 100;
float km = cm / 100000;
System.out.println("Longueur en mètres = " + metre + " m");
System.out.println("Longueur en kilomètres = " + km + " km");
clavier.close();
}
}Longueur en mètres = 10.00 m Longueur en kilomètres = 0.01000 km
1000
Longueur en mètres = 10.00 m Longueur en kilomètres = 0.01000 km
Exercice 4 — Conversion de jours en années, semaines et jours
Décomposer un nombre de jours
Écrire un programme qui lit un nombre de jours et le décompose en années, semaines et jours restants.
- Années :
annees = jours / 365(division entière). - Semaines :
semaines = (jours % 365) / 7. - Jours restants :
jours = jours - (annees*365) - (semaines*7). - On utilise
%(modulo) et/(division entière) — opérateurs clés pour ce type de décomposition.
/ : donne le quotient sans décimale.Modulo
% : donne le reste de la division.Exemple :
373 / 365 = 1 et 373 % 365 = 8.#include <stdio.h>
int main()
{
int jours, annees, semaines;
printf("Saisir le nombre de jours : ");
scanf("%d", &jours);
annees = jours / 365;
semaines = (jours % 365) / 7;
jours = jours - (annees * 365) - (semaines * 7);
printf("%d an(s)\n", annees);
printf("%d semaine(s)\n", semaines);
printf("%d jour(s)\n", jours);
return 0;
}jours = int(input('Saisir le nombre de jours : '))
annees = jours // 365
semaines = (jours % 365) // 7
jours = jours - annees * 365 - semaines * 7
print(f"{annees} an(s)")
print(f"{semaines} semaine(s)")
print(f"{jours} jour(s)")import java.util.Scanner;
public class ConversionJours {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir le nombre de jours : ");
int jours = clavier.nextInt();
int annees = jours / 365;
int semaines = (jours % 365) / 7;
jours = jours - annees * 365 - semaines * 7;
System.out.println(annees + " an(s)");
System.out.println(semaines + " semaine(s)");
System.out.println(jours + " jour(s)");
clavier.close();
}
}1 an(s) 1 semaine(s) 1 jour(s)
373
1 an(s) 1 semaine(s) 1 jour(s)
Exercice 5 — Calcul d'une puissance
Calculer baseexposant
Écrire un programme qui lit une base et un exposant, puis calcule et affiche la puissance base ^ exposant.
// C — nécessite <math.h>
double pow(double base, double exp);
// Python
import math
math.pow(base, expo) # ou : base ** expo
// Java — nécessite java.lang.Math
Math.pow(double base, double exp);#include <stdio.h>
#include <math.h> /* pow() */
int main()
{
double base, expo, puissance;
printf("Saisir la base : ");
scanf("%lf", &base);
printf("Saisir l'exposant : ");
scanf("%lf", &expo);
puissance = pow(base, expo);
printf("%.2lf ^ %.2lf = %.2lf\n", base, expo, puissance);
return 0;
}base = float(input('Saisir la base : '))
expo = float(input("Saisir l'exposant : "))
puissance = base ** expo # opérateur Python natif
print(f"{base} ^ {expo} = {puissance}")import java.util.Scanner;
public class Puissance {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir la base : ");
double base = clavier.nextDouble();
System.out.print("Saisir l'exposant : ");
double expo = clavier.nextDouble();
double puissance = Math.pow(base, expo);
System.out.println(base + " ^ " + expo + " = " + puissance);
clavier.close();
}
}6.00 ^ 2.00 = 36.00
6 2
6.00 ^ 2.00 = 36.00
Exercice 6 — Racine carrée
Calculer la racine carrée d'un nombre
Écrire un programme qui lit un nombre et affiche sa racine carrée.
- La racine carrée de n peut s'écrire aussi
n^0.5. - En C :
sqrt(nb)depuis<math.h>; en Python :math.sqrt(nb)ounb ** 0.5; en Java :Math.sqrt(nb). - Attention : la racine carrée n'est définie que pour les réels positifs. Pour une version robuste, vérifiez que l'entrée est ≥ 0.
sqrt() retourne NaN (Not a Number) en C/Java et lève une exception en Python. Il faudrait ajouter un test de validité dans une version production.#include <stdio.h>
#include <math.h>
int main()
{
double nb, racine;
printf("Saisir un nombre : ");
scanf("%lf", &nb);
racine = sqrt(nb);
printf("La racine carrée de %.2lf = %.2lf\n", nb, racine);
return 0;
}import math
nb = float(input('Saisir un nombre : '))
racine = math.sqrt(nb)
print(f"La racine carrée de {nb} = {racine}")import java.util.Scanner;
public class RacineCarree {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir un nombre : ");
double nb = clavier.nextDouble();
double racine = Math.sqrt(nb);
System.out.println("La racine carrée de " + nb + " = " + racine);
clavier.close();
}
}La racine carrée de 9.00 = 3.00
9
La racine carrée de 9.00 = 3.00
Exercice 7 — Troisième angle d'un triangle
Trouver le troisième angle
Écrire un programme qui lit deux angles d'un triangle et calcule le troisième angle, sachant que la somme des angles d'un triangle vaut toujours 180° :
$$a + b + c = 180°$$
- Déduire directement :
c = 180 - (a + b). - Les angles sont des entiers —
intsuffit ici.
#include <stdio.h>
int main()
{
int a, b, c;
printf("Saisir angle 1 : ");
scanf("%d", &a);
printf("Saisir angle 2 : ");
scanf("%d", &b);
c = 180 - (a + b);
printf("3ème angle = %d°\n", c);
return 0;
}a = int(input('Saisir angle 1 : '))
b = int(input('Saisir angle 2 : '))
c = 180 - (a + b)
print(f"3ème angle = {c}°")import java.util.Scanner;
public class TroisiemeAngle {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir angle 1 : ");
int a = clavier.nextInt();
System.out.print("Saisir angle 2 : ");
int b = clavier.nextInt();
int c = 180 - (a + b);
System.out.println("3ème angle = " + c + "°");
clavier.close();
}
}3ème angle = 100°
50 30
3ème angle = 100°
Exercice 8 — Surface d'un triangle quelconque
Calculer la surface d'un triangle
Écrire un programme qui lit la base et la hauteur d'un triangle et calcule sa surface :
$$\text{surface} = \frac{b \times h}{2}$$
- Déclarer
base,hauteuretsurfaceenfloat. - Appliquer :
surface = (base * hauteur) / 2.0. - Diviser par
2.0(et non2) pour forcer un calcul en virgule flottante en C.
#include <stdio.h>
int main()
{
float base, hauteur, surface;
printf("Saisir la base : ");
scanf("%f", &base);
printf("Saisir la hauteur : ");
scanf("%f", &hauteur);
surface = (base * hauteur) / 2.0f;
printf("La surface = %.2f\n", surface);
return 0;
}base = float(input('Saisir la base : '))
hauteur = float(input('Saisir la hauteur : '))
surface = (base * hauteur) / 2
print(f"La surface = {surface}")import java.util.Scanner;
public class SurfaceTriangle {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir la base : ");
float base = clavier.nextFloat();
System.out.print("Saisir la hauteur : ");
float hauteur = clavier.nextFloat();
float surface = (base * hauteur) / 2;
System.out.println("La surface = " + surface);
clavier.close();
}
}La surface = 225.00
15 30
La surface = 225.00
Exercice 9 — Résultats scolaires
Total, moyenne et pourcentage de 5 matières
Écrire un programme qui saisit les notes de 5 matières d'un élève (sur 100 chacune) et calcule :
- le total des notes ;
- la moyenne ;
- le pourcentage (total / 500 × 100).
total = mat1 + mat2 + mat3 + mat4 + mat5moyenne = total / 5.0pourcentage = (total / 500.0) * 100- Le pourcentage sur 500 correspond à un système de notation où chaque matière est notée sur 100 pour 5 matières.
#include <stdio.h>
int main()
{
float mat1, mat2, mat3, mat4, mat5;
float total, moyenne, pourcentage;
printf("Saisir les notes de 5 matières :\n");
scanf("%f %f %f %f %f", &mat1, &mat2, &mat3, &mat4, &mat5);
total = mat1 + mat2 + mat3 + mat4 + mat5;
moyenne = total / 5.0f;
pourcentage = (total / 500.0f) * 100;
printf("Total = %.2f\n", total);
printf("Moyenne = %.2f\n", moyenne);
printf("Pourcentage = %.2f %%\n", pourcentage);
return 0;
}notes = []
for i in range(1, 6):
note = float(input(f'Note matière {i} : '))
notes.append(note)
total = sum(notes)
moyenne = total / 5
pourcentage = (total / 500) * 100
print(f"Total = {total}")
print(f"Moyenne = {moyenne:.2f}")
print(f"Pourcentage = {pourcentage:.2f} %")import java.util.Scanner;
public class ResultatScolaire {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
float total = 0;
for (int i = 1; i <= 5; i++) {
System.out.print("Note matière " + i + " : ");
total += clavier.nextFloat();
}
float moyenne = total / 5;
float pourcentage = (total / 500) * 100;
System.out.println("Total = " + total);
System.out.println("Moyenne = " + moyenne);
System.out.println("Pourcentage = " + pourcentage + " %");
clavier.close();
}
}Total = 60.00 Moyenne = 12.00 Pourcentage = 12.00 %
10 11 12 13 14
Total = 60.00 Moyenne = 12.00 Pourcentage = 12.00 %
Exercice 10 — Surface d'un triangle équilatéral
Calculer la surface d'un triangle équilatéral
Écrire un programme qui lit le côté d'un triangle équilatéral et calcule sa surface grâce à la formule :
$$\text{surface} = \frac{\sqrt{3}}{4} \times c^2$$
- Utiliser
sqrt(3)de la bibliothèque mathématique. - Calculer
cote * coteoupow(cote, 2).
#include <stdio.h>
#include <math.h>
int main()
{
float cote, surface;
printf("Saisir le côté du triangle : ");
scanf("%f", &cote);
surface = (sqrt(3.0) / 4.0) * (cote * cote);
printf("La surface du triangle = %.2f\n", surface);
return 0;
}import math
cote = float(input('Saisir le côté du triangle : '))
surface = (math.sqrt(3) / 4) * cote ** 2
print(f"La surface du triangle = {surface:.2f}")import java.util.Scanner;
public class SurfaceEquilatéral {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.print("Saisir le côté du triangle : ");
double cote = clavier.nextDouble();
double surface = (Math.sqrt(3) / 4) * cote * cote;
System.out.printf("La surface du triangle = %.2f%n", surface);
clavier.close();
}
}La surface du triangle = 389.71
30
La surface du triangle = 389.71
Récapitulatif — Fonctions mathématiques utilisées
| Fonction | C (<math.h>) | Python (math) | Java (Math) |
|---|---|---|---|
| Puissance | pow(base, exp) | base ** exp | Math.pow(base, exp) |
| Racine carrée | sqrt(n) | math.sqrt(n) | Math.sqrt(n) |
| Valeur absolue | abs(n) | abs(n) | Math.abs(n) |
| Arrondi inférieur | floor(n) | math.floor(n) | Math.floor(n) |
| Arrondi supérieur | ceil(n) | math.ceil(n) | Math.ceil(n) |
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.