#include #include /* Funktionsdeklarationen */ int gibIntWert(char text[], int min, int max); int istSchaltjahr(int jahr); int tageProMonat(int jahr, int monat); /* Mainfunktion */ int main (int argc, char *argv[]) { int monat, jahr; // Monat einlesen und Bereich ueberpruefen monat = gibIntWert("Monat", 1, 12); jahr = gibIntWert("Jahr", 1600, 9999); // Ausgabe zum Test printf("Monat: %d, Jahr: %d \n", monat, jahr); // Ausgabe zum Test (hier mit dem ternaeren Operator "?:") printf("%d ist %s Schaltjahr\n", jahr, istSchaltjahr(jahr) ? "ein" : "kein"); // Ausgabe printf("Der Monat %02d-%d hat %d Tage.\n", monat, jahr, tageProMonat(jahr, monat)); return 0; } /* Funktionsdefinitionen */ int gibIntWert(char text[], int min, int max) { int wert; (void) printf("Enter %s :", text); scanf("%d", &wert); if(wert >= min & wert <= max){ return wert; } else { return 0; } } int istSchaltjahr(int jahr){ int ergebnis; if(jahr % 400 == 0){ ergebnis = 1; } else if (jahr % 100 == 0){ ergebnis = 0; } else if(jahr % 4 == 0){ ergebnis = 1; } else { ergebnis = 0; } return ergebnis; } int tageProMonat(int jahr, int monat){ int ergebnis = 0; switch (monat) { case 1: ergebnis = 31; break; case 2: if(istSchaltjahr(jahr)){ ergebnis = 29; } else { ergebnis = 28; } break; case 3: ergebnis = 31; break; case 4: ergebnis = 30; break; case 5: ergebnis = 31; break; case 6: ergebnis = 30; break; case 7: ergebnis = 31; break; case 8: ergebnis = 31; break; case 9: ergebnis = 30; break; case 10: ergebnis = 31; break; case 11: ergebnis = 30; break; case 12: ergebnis = 31; break; } return ergebnis; }