Exercícios de C/C++ para iniciantes

Verificar ano bissexto em C e C++

Nesta lição, você vai verificar se um ano é bissexto pela regra do calendário gregoriano.

Introdução

No calendário gregoriano, ano bissexto é o divisível por 4, exceto as viradas de século (divisíveis por 100) que não são divisíveis por 400. Por isso 2000 foi bissexto e 1900 não. É um bom exercício para combinar várias condições lógicas.

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 year = 2024;
    // Apply the Gregorian calendar rules in one expression.
    int leap = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
    printf("%d is %sa leap year\n", year, leap ? "" : "not ");
}
Resultado da execução
2024 is a leap year
C++
Executar →
main.cpp
#include <iostream>
int main() {
    int year = 2024;
    // Apply the Gregorian calendar rules in one expression.
    bool leap = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
    std::cout << year << " is " << (leap ? "" : "not ") << "a leap year\n";
}
Resultado da execução
2024 is a leap year

Comparação entre C e C++

A expressão year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) descreve a regra completa em uma única linha. A primeira parte trata dos anos divisíveis por 400, e a segunda dos anos divisíveis por 4 que não são viradas de século. O ano 2024 atende à segunda parte, então é bissexto.

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