Exercices C/C++ pour débutants

Inverser une chaîne en C et C++

Dans cette leçon, vous allez inverser une chaîne directement dans sa propre mémoire en échangeant les caractères symétriques.

Introduction

Inverser une chaîne est un bon exercice pour manipuler les indices et échanger des éléments sur place (in-place), c'est-à-dire sans créer de nouvelle chaîne. L'idée est d'échanger le premier caractère avec le dernier, puis d'avancer vers le milieu.

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>
#include <string.h>
int main(void) {
    char text[] = "CodeUtility"; size_t length = strlen(text);
    // Swap mirrored characters in place.
    for (size_t i = 0; i < length / 2; ++i) {
        char temporary = text[i]; text[i] = text[length - 1 - i]; text[length - 1 - i] = temporary;
    }
    puts(text);
}
Résultat de l’exécution
ytilitUedoC
C++
Exécuter →
main.cpp
#include <algorithm>
#include <iostream>
#include <string>
int main() {
    std::string text = "CodeUtility";
    // reverse applies swaps across the selected range.
    std::reverse(text.begin(), text.end());
    std::cout << text << '\n';
}
Résultat de l’exécution
ytilitUedoC

Comparaison entre C et C++

La boucle échange text[i] et text[length - 1 - i] grâce à la variable temporaire temporary, jusqu'à ce que les deux positions se rejoignent au milieu de la chaîne. Notez que la chaîne doit être déclarée comme tableau char text[] pour pouvoir être modifiée. Le résultat affiché est ytilitUedoC.

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