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++
#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 ");
}
2024 is a leap year
#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";
}
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 usa funções procedurais pequenas e deixa à vista como os dados ficam na memória.
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