ccf150902-日期计算
题目
问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天。满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍; 2) 年份是400的整数倍。 输入格式 输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。 输入的第二行包含一个整数d,d在1至365之间。 输出格式 输出两行,每行一个整数,分别表示答案的月份和日期。 样例输入 2015 80 样例输出 3 21 样例输入 2000 40 样例输出 2 9
思路
这个题应该是C++入门经典题了,先判断闰年还是平年,然后构建每个年份的月份数组,依次减去就好了。
题解
#include<iostream> using namespace std; int isRun(int year){//是闰年返回1 if(year%4==0 && year%100!=0){ return 1; } if(year%400==0){ return 1; } return 0; } int main(){ int monthP[]={31,28,31,30,31,30,31,31,30,31,30,31}; int monthR[]={31,29,31,30,31,30,31,31,30,31,30,31}; int year; int day; scanf("%d %d",&year,&day); int month=1; if(isRun(year)==1){ for(int i=0;i<12;i++){ if(day-monthR[i]>0){ month++; day=day-monthR[i]; } else{ break; } } } if(isRun(year)==0){ for(int i=0;i<12;i++){ if(day-monthP[i]>0){ month++; day=day-monthP[i]; } else{ break; } } } printf("%d\n",month); printf("%d\n",day); return 0; }