多体会一下 学习一下数组的使用方法
#include <stdio.h>
#include <stdbool.h>
#include <assert.h>
bool isLeapYear(int year) {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
// 计算天数的方法 1
int calcMonthsDay(int m) {
assert(m > 0 && m < 13);
int days = 0;
// 利用 switch 不跳出的特性进行计算,不推荐使用,但是要明白原理
switch (m) {
case 12: days += 30;
case 11: days += 31;
case 10: days += 30;
case 9: days += 31;
case 8: days += 31;
case 7: days += 30;
case 6: days += 31;
case 5: days += 30;
case 4: days += 31;
case 3: days += 28;
case 2: days += 31;
default: break;
}
return days;
}
// // 计算天数的方法 2
// int calcMonthsDay(int m) {
// assert(m > 0 && m < 13);
// int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
// int totalDays = 0;
// for (int i = 0; i < m - 1; ++i) {
// totalDays += days[i];
// }
// return totalDays;
// }
// 计算天数的方法 3
// int calcMonthsDay(int m) {
// assert(m > 0 && m < 13);
// int days[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
// return days[m - 1];
// }
int main() {
int year, month, day;
printf("请输入您要查询的年月日 >:");
scanf("%d %d %d", &year, &month, &day);
assert(month > 0 && month < 13);
assert(day > 0 && day < 32);
int totalDays = calcMonthsDay(month) + day;
if (isLeapYear(year) && month > 2) {
++totalDays;
}
printf("%d 年 %d 月 %d 日是该年中的第 %d 天\n", year, month, day, totalDays);
return 0;
}