题目
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入格式
输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输入的第二行包含一个整数d,d在1至365之间。
输出格式
输出两行,每行一个整数,分别表示答案的月份和日期。
样例1
输入:
2015
80
输出:
3
21
样例2
输入:
2000
40
输出:
2
9
分析
想要知道第d天是几月几日,首先要知道的是这一年中12个月份各自的天数,12个月中只有2月的天数是会变化的,我们需要根据不同年份来设置2月的天数。
知道了12个月的天数后,用d依次去减每个月份的天数,当所得结果小于等于0时,该月份就是对应的月份数,进行这次减法前的d就是该月的日数。
代码
/*
20190910
ccf试题2:日期计算
*/
#include <iostream>
using namespace std;
int main(){
//接受数据
int year;
int days;
cin >>year >>days;
//计算日期
//初始化月份数据
int month_days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if((year%4 == 0 && year%100 != 0) || (year%400 == 0)){
month_days[1] = 29;
}
//计算
int month = 0;
int day;
while(days > 0){
day = days;
days = days - month_days[month];
month++;
}
cout <<month<<endl;
cout <<day<<endl;
return 0;
}
总结
迄今为止见过的最简单的ccf试题2。