Exercícios de C/C++ para iniciantes

Problema FizzBuzz em C e C++

Nesta lição, você vai imprimir Fizz, Buzz ou FizzBuzz para os números de 1 a 15 usando um laço e instruções condicionais.

Introdução

FizzBuzz é um exercício de programação clássico: para cada número de 1 a 15, imprima Fizz se ele for divisível por 3, Buzz se for divisível por 5, FizzBuzz se for divisível pelos dois e, nos outros casos, o próprio número. O exercício pratica laços, o resto da divisão e a ordem das condições.

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) {
    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);
    }
}
Resultado da execução
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
C++
Executar →
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';
    }
}
Resultado da execução
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Comparação entre C e C++

A condição n % 15 == 0, ou seja, divisível por 3 e por 5, precisa ser testada primeiro. Se a divisibilidade por 3 fosse testada antes, o 15 seria impresso como Fizz e nunca chegaria ao ramo FizzBuzz. Ordenar as condições da mais específica para a mais geral é o ponto principal deste exercício.

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