请你计算出 x年 y 月 z 日是 x 年的第几天。
注意闰年对答案的影响。
输入格式
一行三个整数,x,y 和z。(1583≤x≤2100)。数据保证输入合法。
输出格式
一个整数,表示是第几天。
例:
输入
2016 3 1
输出
61
整体思路:首先我们用数组分别记录12个月所含天数,然后用if语句判断是否为闰年,再用if语句判断是否为违规数据;最后用for循环累加月的天数就完成了。
#include <stdio.h>
int main()
{
int year, month, day;定义三个变量分别记录年月日;
int i,daybefore = 0; 定义i作为数组的下标,定义daybefore用来记录最终的天数;
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };//用数组记录12个月的天数;
scanf("%d%d%d", &year, &month, &day);//输入 年 月 日;
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) // 闰年的判断
a[1] = 29;
if (month < 1 || month>12 || day < 1 || day > a[month - 1]) // 排除错误输入
printf("data error");
else {
for (i = 0; i < month-1; i++)
daybefore += a[i]; //累加计算最终天数
printf("%d", day + daybefore); // 输出 今天的第几天;
}
return 0;
}