概述
/#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;
}
最后
以上就是奋斗彩虹为你收集整理的从2000年一月一日算,给一个天数,算出它是多少年月日 星期几的全部内容,希望文章能够帮你解决从2000年一月一日算,给一个天数,算出它是多少年月日 星期几所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复