Exercices C/C++ pour débutants

Le problème FizzBuzz en C et C++

Dans cette leçon, vous allez afficher Fizz, Buzz ou FizzBuzz pour les nombres de 1 à 15 avec une boucle et des instructions conditionnelles.

Introduction

FizzBuzz est un exercice de programmation classique : pour chaque nombre de 1 à 15, on affiche Fizz s'il est divisible par 3, Buzz s'il est divisible par 5, FizzBuzz s'il est divisible par les deux, et sinon le nombre lui-même. L'exercice fait travailler les boucles, le reste de la division et l'ordre des conditions.

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) {
    for (int n = 1; n <= 15; ++n) {
        // Check the most specific condition first.
        if (n % 15 == 0) puts("FizzBuzz");
        else if (n % 3 == 0) puts("Fizz");
        else if (n % 5 == 0) puts("Buzz");
        else printf("%d\n", n);
    }
}
Résultat de l’exécution
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
C++
Exécuter →
main.cpp
#include <iostream>
int main() {
    for (int n = 1; n <= 15; ++n) {
        // Check the most specific condition first.
        if (n % 15 == 0) std::cout << "FizzBuzz\n";
        else if (n % 3 == 0) std::cout << "Fizz\n";
        else if (n % 5 == 0) std::cout << "Buzz\n";
        else std::cout << n << '\n';
    }
}
Résultat de l’exécution
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Comparaison entre C et C++

La condition n % 15 == 0, c'est-à-dire divisible par 3 et par 5, doit être testée en premier. Si l'on teste d'abord la divisibilité par 3, le 15 s'affichera Fizz et n'atteindra jamais la branche FizzBuzz. Ordonner les conditions de la plus précise à la plus générale est le point clé de cet exercice.

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