Exercícios de C/C++ para iniciantes

Calcular o fatorial com um laço em C e C++

Nesta lição, você vai calcular o fatorial de um número com um laço e guardar o resultado em um tipo grande o suficiente.

Introdução

O fatorial de n, escrito n!, é o produto de todos os inteiros positivos de 1 até n; por exemplo, 6! = 720. O fatorial cresce muito rápido, então é preciso usar um tipo grande, como unsigned long long, para evitar estouro.

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 number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    printf("%d! = %llu\n", number, result);
}
Resultado da execução
6! = 720
C++
Executar →
main.cpp
#include <iostream>
int main() {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    std::cout << number << "! = " << result << '\n';
}
Resultado da execução
6! = 720

Comparação entre C e C++

A variável result começa em 1, assim 0! e 1! continuam corretos sem tratamento especial. O laço multiplica result por cada número de 2 até number. O especificador %llu do printf serve para imprimir valores do tipo unsigned long long.

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