从2000年一月一日算,给一个天数,算出它是多少年月日 星期几

/#include <iostream> 
#include <string> 
using namespace std; 
bool isLeapYear(int year)                            //判断是否为闰年
 {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
 }

 int main()
 { 
string week[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};         //定义字符串数组存储星期
int monthDay[] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};     //定义整型数组保存每月的天数
int leapYear[] = {365, 366};   //定义整型数组保存每年的天数
int year;
int month; 
int day; 
int d; 
int dayofweek;
while(cin>>d && d != -1)

//从2000-01-01开始计算
year = 2000; 
month = 1;
day = 1; 
dayofweek = 6;
while(d >= leapYear[isLeapYear(year)])    //处理每一年  

dayofweek = (dayofweek + leapYear[isLeapYear(year)]%7) % 7;
d -= leapYear[isLeapYear(year)];
year++; 

for(int i=1; i<=d; i++) 

dayofweek++; 
if(dayofweek % 7 == 0) //星期,七天一个周期循环 

dayofweek = 0;

day++; 
if(month != 2 && day > monthDay[month]) //到了一个月的最后一天,月份累加 
{
month++; day = 1; 
}
if(month == 2 && isLeapYear(year) && day > 29)// 二月份单独算

month++; 
day = 1; 

if(month == 2 && !isLeapYear(year) && day > 28) 

month++; 
day = 1; 

if(month > 12) //到了12月,年累加
{
month = 1; 
year++; 
}
}
cout<<year<<"-"; 
if(month<10) 

cout<<"0"<<month; 

else 

cout<<month;
}
cout<<"-"; 
if(day<10) 
{ cout<<"0"<<day; 

else 

cout<<day;

cout<<" "<<week[dayofweek]<<endl; 

return 0; 
 }
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值