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

本文介绍了一个简单的C++程序,用于计算从2000-01-01起的任意天数对应的日期及星期几。程序首先定义了判断闰年的函数,然后通过循环计算每年、每月的天数,并更新当前日期直至达到指定天数。
部署运行你感兴趣的模型镜像
/#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; 
 }

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值