请你计算出 xx 年 yy 月 zz 日是 xx 年的第几天。
请注意闰年对答案的影响。
输入格式
一行三个整数,xx,yy 和 zz。(1583\le x\le 21001583≤x≤2100)。数据保证输入合法。
输出格式
一个整数,表示是第几天。
Sample Input
2016 3 1
Sample Output
61
Sample Input 2
1900 3 1
Sample Output 2
60
首先需要有if语句用来判断平年闰年,还要有一个可以从任何时段进入,直到底才脱出,首先想到了去掉break的switch语句,判断月份,月份越大,进入越靠上,后面我们还要给是闰年的年份的二月天数加上一,最后输出总天数。
#include<stdio.h>
int main(){
int x,y,z,day=0;//定义输入的年月日和最后的输出的总天数day
scanf("%d%d%d",&x,&y,&z);//输入年月日
if(1583<=x&&x<=2100)//确保输入的年份为有效年份
{
switch(y){ //利用switch判断输入的月份,去掉break可以让他一直进行递加
case 12:day+=30;
case 11:day+=31;
case 10:day+=30;
case 9:day+=31;
case 8:day+=31;
case 7:day+=30;
case 6:day+=31;
case 5:day+=30;
case 4:day+=31;
case 3:day+=28;
case 2:day+=31;
case 1:break;
}
day+=z; //把几号加入到总数day中
if((x%4==0&&x%100!=0)||x%400==0)//判断是否为闰年
{
if(y>=2&&day>59)//在已是闰年的基础上判断是否需要给总天数加一
day++;
}
printf("%d\n",day);//输出总天数
}
return 0;
}