Exercícios de C/C++ para iniciantes

Inverter uma string em C e C++

Nesta lição, você vai inverter uma string na própria memória dela trocando de lugar os caracteres simétricos.

Introdução

Inverter uma string é um bom exercício para praticar índices e trocas no próprio lugar (in-place), ou seja, sem criar uma nova string. A ideia é trocar o primeiro caractere com o último e ir avançando em direção ao meio.

Pontos importantes

  • Ative os avisos do compilador (compiler warnings) e corrija todos eles.
  • Entenda o tipo de dado e o tempo de vida (lifetime) de cada valor.
  • Sempre valide os dados de entrada e os limites dos índices de arrays.

Exemplos de código C e C++

C
Executar →
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);
}
Resultado da execução
ytilitUedoC
C++
Executar →
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';
}
Resultado da execução
ytilitUedoC

Comparação entre C e C++

O laço troca text[i] com text[length - 1 - i] usando a variável temporária temporary, até as duas posições se encontrarem no meio da string. Repare que a string precisa ser declarada como array char text[] para poder ser modificada. O resultado impresso é ytilitUedoC.

C

C usa funções procedurais pequenas e deixa à vista como os dados ficam na memória.

C++

C++ continua permitindo trabalhar em baixo nível, mas acrescenta tipos da biblioteca e abstrações mais seguras.

Exercícios práticos

Execute as duas versões e depois mude o código para observar a diferença de segurança que cada linguagem oferece.

  • Teste entradas inválidas e valores nos limites.
  • Compile com as flags -Wall -Wextra -Wpedantic para ativar mais avisos.
  • Separe as declarações compartilhadas em um arquivo de cabeçalho e a implementação em outro arquivo.

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios