Exercices C/C++ pour débutants

Convertir un nombre décimal en binaire en C et C++

Dans cette leçon, vous allez convertir un entier positif du décimal au binaire par divisions successives par 2.

Introduction

Pour convertir un nombre en binaire, on le divise par 2 de façon répétée en notant le reste à chaque division. Ces restes sont les chiffres binaires, mais on les obtient du dernier chiffre (le poids faible) vers le premier.

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) {
    unsigned number = 13, value = number; int bits[32], count = 0;
    // Store remainders generated from right to left.
    do { bits[count++] = value % 2; value /= 2; } while (value);
    printf("%u = ", number); while (count) printf("%d", bits[--count]); puts("");
}
Résultat de l’exécution
13 = 1101
C++
Exécuter →
main.cpp
#include <bitset>
#include <iostream>
#include <string>
int main() {
    unsigned number = 13;
    // Remove leading zeroes from a fixed-width bitset string.
    std::string bits = std::bitset<32>(number).to_string();
    bits.erase(0, bits.find_first_not_of('0'));
    std::cout << number << " = " << bits << '\n';
}
Résultat de l’exécution
13 = 1101

Comparaison entre C et C++

La boucle do-while stocke le reste value % 2 dans le tableau bits, puis divise value par 2, jusqu'à ce que value vaille 0. Le do-while garantit que même le nombre 0 a au moins un chiffre. Comme les divisions donnent d'abord le dernier chiffre, le programme affiche le tableau bits à l'envers, 13 s'affiche donc 1101.

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