日期计算
题目
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入
输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输入的第二行包含一个整数d,d在1至365之间。
输出
输出两行,每行一个整数,分别表示答案的月份和日期。
输入样例1
2015
80
输出样例1
3
21
输入样例2
2000
40
输出样例2
2
9
参考代码
#include<stdio.h>
bool panduan(int n)
{
if((n%4==0&&n%100!=0)||(n%400==0))
return true;
return false;
}
int main ()
{
int y,d;
int m,n;
scanf("%d %d",&y,&d);
bool flag=panduan(y);
if(flag&&d>60)
d=d-1;
if(d<=31)
{
m=1;
n=d;
}
else if(d<=59)
{
m=2;
n=d-31;
}
else if(d<=90)
{
m=3;
n=d-59;
}
else if(d<=120)
{
m=4;
n=d-90;
}
else if(d<=151)
{
m=5;
n=d-120;
}
else if(d<=181)
{
m=6;
n=d-151;
}
else if(d<=212)
{
m=7;
n=d-181;
}
else if(d<=243)
{
m=8;
n=d-212;
}
else if(d<=273)
{
m=9;
n=d-243;
}
else if(d<=304)
{
m=10;
n=d-273;
}
else if(d<=334)
{
m=11;
n=d-304;
}
else if(d<=365)
{
m=12;
n=d-334;
}
if(flag&&d==60)
{
m=2;n=29;
}
printf("%d\n%d\n",m,n);
return 0;
}
这个题我们需要判断给出的年份是否是闰年,我用了一个函数(参考以上的panduan函数)来判断,如果是闰年且天数大于60,我把天数减去1,当做一般的年份来计算;如果是闰年且天数等于60,就直接是2月29.一般的年份计算属于哪个月份的哪一天,我用的if-else来列举了每一种情况。