Exercices C/C++ pour débutants

Calculer une factorielle avec une boucle en C et C++

Dans cette leçon, vous allez calculer la factorielle d'un nombre avec une boucle et stocker le résultat dans un type assez grand.

Introduction

La factorielle de n, notée n!, est le produit de tous les entiers positifs de 1 à n ; par exemple, 6! = 720. La factorielle grandit très vite, il faut donc un type assez grand, comme unsigned long long, pour éviter un dépassement.

Points importants

  • Activez les avertissements du compilateur (compiler warnings) et corrigez-les tous.
  • Comprenez bien le type et la durée de vie (lifetime) de chaque valeur.
  • Vérifiez toujours les données d'entrée et les limites des indices de tableau.

Exemples de code C et C++

C
Exécuter →
main.c
#include <stdio.h>
int main(void) {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    printf("%d! = %llu\n", number, result);
}
Résultat de l’exécution
6! = 720
C++
Exécuter →
main.cpp
#include <iostream>
int main() {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    std::cout << number << "! = " << result << '\n';
}
Résultat de l’exécution
6! = 720

Comparaison entre C et C++

La variable result commence à 1, ainsi 0! et 1! restent corrects sans traitement particulier. La boucle multiplie result successivement par chaque nombre de 2 à number. Le spécificateur %llu de printf sert à afficher une valeur de type unsigned long long.

C

C utilise de petites fonctions procédurales et montre ouvertement comment les données sont représentées en mémoire.

C++

C++ permet toujours de travailler à bas niveau, mais ajoute des types de bibliothèque et des abstractions plus sûres.

Exercices d'approfondissement

Exécutez les deux versions, puis modifiez le code pour observer la différence de sécurité qu'apporte chaque langage.

  • Testez des entrées invalides et des valeurs limites.
  • Compilez avec les options -Wall -Wextra -Wpedantic pour activer davantage d'avertissements.
  • Placez les déclarations communes dans un fichier d'en-tête et l'implémentation dans un fichier séparé.

S'entraîner avec un défi

Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.

Tous les défis