输入日期计算出星期几

来源:互联网 发布:最准确的平码公式算法 编辑:程序博客网 时间:2024/05/31 13:15
#include <iostream>
using namespace std;
int main()
{
 int y,m,d;//定义变量y,m,d分别表示所求的那天的年月日
 int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};//定义数组记录平年十二个月每一月的天数
 int n,N;//定义n记录在要求的那一年以前的闰年的个数,定义N记录从纪年开始到所求的那天经过的天数
 cout<<"请按顺序输入所求的那天的年月日:"<<endl;//输出"请按顺序输入所求的那天的年月日:"
 cin>>y>>m>>d;//输入所求的那天的年月日
 if(y%400==0||(y%4==0&&y%100!=0))mon[1]=29;//若所求的那天所在年份是闰年,将数组中二月对应的天数数值改为29
 n=(y-1)/4-((y-1)/100-(y-1)/400);//计算在要求的那天所在的年份之前有多少个闰年并赋给n 
 N=365*(y-1)+n;//计算在要求的那天所在的年份之前过了多少天并赋给N
 for(int i=0;i<m-1;i++)
  N+=mon[i];//将这一年中,要求的那天所在的月份之前的天数加给N
 N+=d;//N再加上这个月度过的天数即得从纪年开始到所求的那经过的总天数
 switch (N%7){//N对7 求余,由公元一年一月一日是星期一有以下结果
 case 0: cout<<"这一天是星期日"<<endl;break;//若余数为0,则输出"这一天是星期日"
 case 1: cout<<"这一天是星期一"<<endl;break;//若余数为1,则输出"这一天是星期一"
 case 2: cout<<"这一天是星期二"<<endl;break;//若余数为2,则输出"这一天是星期二"
 case 3: cout<<"这一天是星期三"<<endl;break;//若余数为3,则输出"这一天是星期三"
 case 4: cout<<"这一天是星期四"<<endl;break;//若余数为4,则输出"这一天是星期四"
 case 5: cout<<"这一天是星期五"<<endl;break;//若余数为5,则输出"这一天是星期五"
 default: cout<<"这一天是星期六"<<endl;//若余数为6,则输出"这一天是星期六"
 }
 system("pause");
 return 0;//结束程序
}
0 0
原创粉丝点击