Esercizi C/C++ per principianti

Verificare un anno bisestile in C e C++

In questa lezione verificherai se un anno è bisestile secondo la regola del calendario gregoriano.

Introduzione

Nel calendario gregoriano è bisestile l'anno divisibile per 4, tranne gli anni di inizio secolo (divisibili per 100) che non sono divisibili per 400. Per questo il 2000 era bisestile e il 1900 no. È un buon esercizio per combinare più condizioni logiche.

Punti importanti

  • Attiva gli avvisi del compilatore (compiler warning) e correggili tutti.
  • Comprendi bene il tipo di dato e la durata (lifetime) di ogni valore.
  • Controlla sempre i dati in ingresso e i limiti degli indici degli array.

Esempi di codice C e C++

C
Esegui →
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 ");
}
Risultato dell'esecuzione
2024 is a leap year
C++
Esegui →
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";
}
Risultato dell'esecuzione
2024 is a leap year

Confronto tra C e C++

L'espressione year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) descrive la regola completa in una sola riga. La prima parte riguarda gli anni divisibili per 400, la seconda quelli divisibili per 4 che non sono inizi di secolo. Il 2024 soddisfa la seconda parte, quindi è bisestile.

C

C usa piccole funzioni procedurali e mostra apertamente come i dati sono rappresentati in memoria.

C++

C++ continua a permettere il lavoro a basso livello, ma aggiunge tipi di libreria e astrazioni più sicure.

Esercizi di approfondimento

Esegui entrambe le versioni e poi modifica il codice per osservare la differenza di sicurezza che offre ciascun linguaggio.

  • Prova input non validi e valori ai limiti.
  • Compila con i flag -Wall -Wextra -Wpedantic per attivare più avvisi.
  • Sposta le dichiarazioni condivise in un file header e l'implementazione in un altro file.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide