请你计算出 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
总的来说就是告诉一天的年月日来计算这是这一年的第几天。
既然如此其实只要分析这一天是第几月份并将从1月1日到该月初的所有日数计算出来,并加上这 一天在这个月的日数z,就可以得出结果。
switch(y){
case 1: num=0;break;
case 2: num=31;break;
case 3: num=59;break;
case 4: num=90;break;
case 5: num=120;break;
case 6: num=151;break;
case 7: num=181;break;
case 8: num=212;break;
case 9: num=243;break;
case 10: num=273;break;
case 11: num=304;break;
case 12: num=334;break;
}
num=num+z;
但既然涉及到月份,就一定要判断是否闰年。
if(x%4==0&&x%100!=0||x%400==0){
if(y>2){
num++;
}
}
所以总代码就是这样了:
#include <stdio.h>
int main()
{
int x,y,z;
int num;
scanf("%d %d %d",&x,&y,&z);
switch(y){ //根据月份计算日数
case 1: num=0;break;
case 2: num=31;break;
case 3: num=59;break;
case 4: num=90;break;
case 5: num=120;break;
case 6: num=151;break;
case 7: num=181;break;
case 8: num=212;break;
case 9: num=243;break;
case 10: num=273;break;
case 11: num=304;break;
case 12: num=334;break;
}
num=num+z;
if(x%4==0&&x%100!=0||x%400==0){ //判断是否闰年
if(y>2){
num++;
}
}
printf("%d\n",num);
}