c++日历问题

【问题描述】

在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。

 

#include<iostream>
#include<string>
using namespace std;

int JudgeQueryNum(int flag){
int num=0;
for(int i=2000;i<2000+flag;i++){
if(i%4==0){
if(i%100==0){
if(i%400!=0){
break;
}else{
num++;
}

}else{
num++;
}


}


}

return num;
}
int JudgeQueryOneNum(int i){
int num=0;

if(i%4==0){
if(i%100==0){
if(i%400!=0){
return 0;
}else{
num++;
}

}else{
num++;
}


}
if(num>0){
return 1;
}


return 0;
}

int JudgeWeekday(int in){
int week;
int temp=in%7;
week=(temp+6)%7;

return week;
}


int main(){
int in;
int num;
int a[12]={31,60,91,121,152,182,213,244,274,305,335,366};
int b[12]={31,59,90,120,151,181,212,243,273,304,334,365};
string c[7]={"sun","mon","tue","wed","thu","fri","sat"};
while(1){
int flag;
int end;
int cur;
int month,day,year,temp=1;
cin>>in;

if(in==-1){
break;
}else{
flag=in/365;
end=in%365;
num=JudgeQueryNum(flag);
cur=JudgeQueryOneNum(2000+flag);
// cout<<num<<endl;
// cout<<cur<<endl;

int remain=in-365*(flag-num)-num*366;
if(cur){

for(int i=0;i<12;i++){
if(remain>a[i]){
temp++;

}else{

break;
}

}
month=temp;
day=remain-a[temp-2]+1;

}else{
for(int i=0;i<12;i++){
if(remain>b[i]){
temp++;

}else{

break;
}

}
month=temp;
day=remain-b[temp-2]+1;
}
year=2000+flag;
int week=JudgeWeekday(in);

cout<<year<<"-"<<month<<"-"<<day<<" "<<c[week]<<endl;



// if(remain>31){
// if(cur){
// if(remain>60){
// if(remain>)
// }else{
// month=2;
// day=remain-31;
// }
//
//
// }
// }else{
// month=1;
// day=remain;
// }




}



}


}

猜你喜欢

转载自www.cnblogs.com/xufeng123/p/12672616.html