Тебе тоже нужно это знать за данный год? Или это только в этом году? Если вам нужно знать его за какой-либо конкретный год, вы можете сделать перечисление «дней в месяц», имеющее один для високосных лет и один для не високосных.
Вам просто нужно знать, в какой день недели начался год (т. Е. «Понедельник», «вторник» и т. Д.)
По крайней мере, у вас будет 5 дат для любого месяца, поэтому вы можете иметь массив с фиксированной длиной целых чисел.
Вы знаете, что григорианский календарь повторяется каждые 400 лет, и что если год X начинается с дня "Y", то год X + 1 начинается с дня («Y» + 1)% 7, если x не високосный год, если это високосный год, он начинается с дня («Y» + 2).
это может дать вам первую дату любого года, и, зная, сколько дней имеют все месяцы для любого данного года, вы можете легко узнать, с какой даты начинается этот месяц («понедельник» и т. д.).
Тогда все, что вам нужно сделать, это что-то вроде
int offset = 0;
int i;
while (myDate + offset != monthStartingDate) {
offset++;
}
i = offset + monthStartingDate;
(myDate - номер дня недели, а monthStartingDate - номер дня недели для первого дня этого месяца)
когда вы выйдете из этого цикла, у вас будет первое вхождение, затем вы просто добавляете 7, пока я не выйду за пределы месяца.
вы можете добавить каждый i в массив ..
int res[5] = {0,0,0,0,0}
for ( ; i < daysOfMonth(month, year); i += 7) {
int res[i / 7] = i;
}
тогда вы просто возвращаете res.
О, я не знаю, что вы могли использовать функции даты: P Я думаю, что идея упражнения заключалась в том, чтобы практиковать C: P