Exercícios de C/C++ para iniciantes

Somar os elementos de um array em C e C++

Nesta lição, você vai somar todos os valores de um array com um laço e uma variável acumuladora.

Introdução

Uma variável acumuladora (accumulator) junta o resultado a cada passo do laço. Para somar um array, ela começa em 0 e recebe cada elemento, um por vez.

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.

Veja como funciona

Clique em Passo para executar o laço um passo de cada vez. Veja a condição sendo verificada, o corpo sendo executado e a tabela de rastreio crescendo linha a linha.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>
int main(void) {
    int values[] = {2, 4, 6, 8, 10}; int total = 0;
    // sizeof determines the local array length.
    for (size_t i = 0; i < sizeof values / sizeof values[0]; ++i) total += values[i];
    printf("sum=%d\n", total);
}
Resultado da execução
sum=30
C++
Executar →
main.cpp
#include <iostream>
#include <numeric>
#include <vector>
int main() {
    std::vector values{2, 4, 6, 8, 10};
    // accumulate folds the range into one total.
    std::cout << "sum=" << std::accumulate(values.begin(), values.end(), 0) << '\n';
}
Resultado da execução
sum=30

Comparação entre C e C++

A variável total começa em 0, e o laço soma cada elemento a total exatamente uma vez. A expressão sizeof values / sizeof values[0] calcula o número de elementos do array, então o laço continua correto mesmo se você adicionar ou remover elementos. O resultado é sum=30.

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