Я написал программу, которая, учитывая число месяца и год, возвращает количество дней в этом месяце:возвращает количество дней в данном месяце данного года
#include <iostream.h>
#include <conio.h>
void main() {
clrscr();
int month, year, i;
cout << "give the year \n";
cin >> year;
cout << "give the month\n";
cin >> month;
for (i = 1; i <= 12; i++) {
i = month;
switch (month) {
case 1:
cout << "number of day in month is 31\n";
break;
case 2:
if (year % 4 == 0) {
cout << "the number of days is 29 \n";
} else {
cout << "the number of days is 28 \n";
}
break;
case 3, 5, 7, 8, 10, 12:
cout << "the number of days is 31 \n";
break;
default:
cout << "the number of days is 30 \n";
return;
}
}
return;
}
Когда я даю месяц номер 3
, он возвращает the number of days is 31
, поэтому он отлично работает. Но когда я даю 1
или 2
, выход
number of day in month is 31
number of day in month is 31
number of day in month is 31
.
.
.
.
Как я могу сделать это только вернуть number of day in month is 31
или number of day in month is 28
если дело 2
?
'если это (год% 4 == 0) {cout << "количество дней равно 29 \ n";} '. Нет, если '(year% 100) == 0', если' (year% 400) == 0' также верен. См. Https://en.wikipedia.org/wiki/Leap_year: * Каждый год, который точно делится на четыре, представляет собой високосный год, за исключением лет, которые точно делятся на 100, но эти лет созвездия - это високосные годы, если они точно делится на 400. Например, 1700, 1800 и 1900 годы не являются високосными годами, но 2000 год. * –
, но это (год% 4 == 0) в скрипте не% 100 –
@AndrewHenle как исправить повторение в случае 1 и 2 –