C++日期转星期源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/********************日期转星期*********************/ /************************JXN/2011/11/16*************/ #include<iostream.h>
int f(int,int);
void main()
{
cout<<"请输入日期(年月日以空格隔开):"<<endl;
int a,b,c,ba,sum;
loop:
cin>>a>>b>>c;
int ai=(a%400==0||(a%4==0&&a%100!=0))*1;
int bi=(a>0&&b>0&&b<13&&c>0&&c<32)*2;
int ci=(b==2&&c>29)*3;
int di=(b==2&&c>28)*4;
if(ci==3||bi!=2||ai+di==4)
{
cout<<"日期错误!请重新输入:"<<endl;
goto loop;
}
else
switch(b)
{
case 1:ba=0;break;
case 2:ba=31;break;
case 3:ba=59;break;
case 4:ba=90;break;
case 5:ba=120;break;
case 6:ba=151;break;
case 7:ba=181;break;
case 8:ba=212;break;
case 9:ba=243;break;
case 10:ba=273;break;
case 11:ba=304;break;
case 12:ba=334;break;
default:ba=0;break;
}
sum=365*(a-1)+ba+c+f(a,b);
switch(sum%7)
{
case 1:cout<<"星期一"<<endl;break;
case 2:cout<<"星期二"<<endl;break;
case 3:cout<<"星期三"<<endl;break;
case 4:cout<<"星期四"<<endl;break;
case 5:cout<<"星期五"<<endl;break;
case 6:cout<<"星期六"<<endl;break;
case 0:cout<<"星期日"<<endl;break;
default:cout<<"错误!"<<endl;break;
}
goto loop;
}
int f(int a,int b)
{
int s=0;
for(int i=1;i<a;i++)
(i%400==0||(i%4==0&&i%100!=0))?s++:s=s;
int ai=(a%400==0||(a%4==0&&a%100!=0))*1;
int bi=(b>3)*2;
int ci=(b==3&&b>28)*3;
(ai+bi==3||ai+ci==4)?s++:s=s;
return s;
}。