#include <iostream>
using namespace std;
int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},
{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31},
};
bool isleap(int year){
return(year % 4==0&&year %100 != 0)||(year%400==0);
}
int main(){
int year,day;
cin>>year;
cin>>day;
int a,b;
for(int m=1;m<13;m++){
int ans=month[m][isleap(year)];
if(day>ans){
day-=ans;
a=ans;
b=m;
}
else {
a=day;
b=m;
break;
}
}
cout<<b<<endl;
cout<<a;
return 0;
}
思考:关键在于闰年的定义和处理;
解决方法:关于日期的计算题目,首先就将月份和判断条件定义上;
小结:自己写完以后看了别人解决方法,直接将输入输入套入,数组定义为一维,下标为月份,更简洁一点;
这道题目关于日期的处理相对较简单,详情继续看书进行巩固复习;
-------------------------------------------------------------分割---------------------------------------------------------------------------------------
11.29日更 (注意思维的简化啊)
#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
int month[13]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int y,d;
while(scanf("%d %d",&y,&d)!=EOF){
month[2]=28;
if(y%400==0||(y%4==0&&y%100!=0)){
month[2]=29;
}
int m=1;
while(d>month[m]){
d-=month[m];
m++;
}
printf("%d\n%d\n",m,d);
}
}