问题描述 给定一个年份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 这个题总体来说是比较简单的,只需要先判断是否为闰年,最后根据闰年情况分为两类进行判断,然后12个月作为一个数组,判断d减去每个月后剩余天数与下一个月的比较情况即可,经过多次调试,代码已经成功AC,下面附代码: #include<iostream>
#include<cmath>
using namespace std;
int isrn(int n){
if((n%4==0&&n%100!=0)||n%400==0)
return 1;
else
return 0;
}
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int main(){
int y,d,sum=0;
cin>>y>>d;
int month=1,date=1;
if(isrn(y)==1){
for(int i=0;i<12;i++){
if(d-b[i]>0){
d=abs(d-b[i]);
month++;
}
if(d-b[i]==0&&i!=0){
cout<<i+1<<endl;
cout<<b[i];
break;
}
if(d-b[i]<0&&i!=0){
cout<<month<<endl;
cout<<abs(d);
break;
}
if(d-b[i]<=0&&i==0){
cout<<month<<endl;
cout<<abs(d);
break;
}
}
}
if(isrn(y)==0){
for(int i=0;i<12;i++){
if(d-a[i]>0){
d=abs(d-a[i]);
month++;
}
if(d-a[i]==0&&i!=0){
cout<<i+1<<endl;
cout<<a[i];
break;
}
if(d-a[i]<0&&i!=0){
cout<<month<<endl;
cout<<abs(d);
break;
}
if(d-a[i]<0&&i==0){
cout<<month<<endl;
cout<<abs(d);
break;
}
}
}
return 0;
} 如果有问题的话欢迎提出 |