根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
本题对三个输入数字依次使用,由年份可得到闰年或平年,故分为两种计算。
在月份中,由于每月天数不好找规律,故分为1—2月,3—7月,8—12月
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b, c, num, n, m, sum;
while (scanf("%d %d %d", &a, &b, &c) != EOF) {
if ((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0))
{
n = 29;
if (b < 3)
{
num = (b - 1) * 31 + c;
}
else if (b >= 3 && b <= 7)
{
m = b / 2;
num = m * 31 + n + c + (b - 2 - m) * 30;
}
else {
sum = 184 + n;
m = (b - 7) / 2;
num = m * 31 + c + sum + (b - m - 8) * 30;
}
}
else {
n = 28;
if (b < 3)
{
num = (b - 1) * 31 + c;
}
else if (b >= 3 && b <= 7)
{
m = b / 2;
num = m * 31 + n + c + (b - 2 - m) * 30;
}
else {
sum = 184 + n;
m = (b - 7) / 2;
num = m * 31 + c + sum + (b - m - 8) * 30;
}
}
printf("%d", num);
}
return 0;
}
运行结果: