标题
日期计算
类别
流程控制
时间限制
1S
内存限制
256Kb
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天,且满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍
输入说明
输入包含两个整数y和d,y表示年份,年份在1900到2018之间(包含1900和2018)。 d表示这一年的第几天,d在1至365之间。
输出说明
在一行输出两个整数,分别表示答案的月份和日期。
输入样例
2015 80
输出样例
3 21
供参考:
#include<stdio.h>
int isLeap(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
int Getdaysofmonth(int y, int m)
{
int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (m == 2 && isLeap(y)) return days[m - 1] + 1;
return days[m - 1];
}
int main()
{
int y, d, m;
do {
//printf("请输入年份 天数:");
scanf("%d%d", &y, &d);
} while (y < 1900 || y > 2018 || d < 1 || d > 365);
for (m = 1; d > Getdaysofmonth(y, m) && m < 13; d -= Getdaysofmonth(y, m), m++);
//printf("%d年%d月%d日\n", y, m, d);
printf("%d %d", m, d);
return 0;
}