Exercícios de C/C++ para iniciantes

Sequência de Fibonacci em C e C++

Nesta lição, você vai imprimir os 10 primeiros números da sequência de Fibonacci usando só duas variáveis e um laço.

Introdução

A sequência de Fibonacci começa com 0 e 1, e cada número seguinte é a soma dos dois anteriores: 0, 1, 1, 2, 3, 5, 8... É um exercício clássico para praticar laços e a atualização de várias variáveis ao mesmo tempo.

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>
int main(void) {
    int first = 0, second = 1;
    for (int i = 0; i < 10; ++i) {
        printf("%s%d", i ? " " : "", first);
        // Advance the pair without storing the whole sequence.
        int next = first + second; first = second; second = next;
    }
    puts("");
}
Resultado da execução
0 1 1 2 3 5 8 13 21 34
C++
Executar →
main.cpp
#include <iostream>
int main() {
    int first = 0, second = 1;
    for (int i = 0; i < 10; ++i) {
        if (i) std::cout << ' ';
        std::cout << first;
        // Advance the pair without storing the whole sequence.
        int next = first + second; first = second; second = next;
    }
    std::cout << '\n';
}
Resultado da execução
0 1 1 2 3 5 8 13 21 34

Comparação entre C e C++

O programa só precisa de duas variáveis, first e second, para guardar o par de números mais recente, sem guardar a sequência inteira. Em cada repetição, ele imprime first, calcula next = first + second e avança o par uma posição. A expressão i ? " " : "" só imprime um espaço antes dos números a partir do segundo.

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