Schaltjahre in C und C++ prüfen
In dieser Lektion prüfst du nach der Regel des gregorianischen Kalenders, ob ein Jahr ein Schaltjahr ist.
Einführung
Im gregorianischen Kalender ist ein Jahr ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhundertjahre (durch 100 teilbar), die nicht durch 400 teilbar sind. Deshalb war 2000 ein Schaltjahr, 1900 aber nicht. Eine gute Übung, um mehrere logische Bedingungen zu verknüpfen.
Wichtige Punkte
- Schalte die Compiler-Warnungen (compiler warnings) ein und behebe alle.
- Verstehe den Datentyp und die Lebensdauer (lifetime) jedes Werts genau.
- Prüfe immer die Eingabedaten und die Grenzen von Array-Indizes.
Codebeispiele in C und 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
C und C++ im Vergleich
Der Ausdruck year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) beschreibt die ganze Regel in einer Zeile. Der erste Teil deckt die durch 400 teilbaren Jahre ab, der zweite die durch 4 teilbaren Jahre, die keine vollen Jahrhundertjahre sind. Das Jahr 2024 erfüllt den zweiten Teil und ist deshalb ein Schaltjahr.
C verwendet kleine prozedurale Funktionen und zeigt offen, wie Daten im Speicher dargestellt werden.
C++ erlaubt weiterhin Arbeit auf niedriger Ebene, ergänzt aber Bibliothekstypen und sicherere Abstraktionen.
Übungen zur Vertiefung
Führe beide Versionen aus und ändere dann den Code, um zu beobachten, welche Sicherheit jede Sprache bietet.
- Teste ungültige Eingaben und Grenzwerte.
- Kompiliere mit den Flags -Wall -Wextra -Wpedantic, um zusätzliche Warnungen einzuschalten.
- Lagere gemeinsame Deklarationen in eine Header-Datei und die Implementierung in eine eigene Datei aus.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
Alle Challenges