资源描述
C++编程
判断一个输入的日期为星期几,并有判断输入日期正误功能
********************************************************************/
#include<iostream.h>
void main()
{
int inputcheck(int,int,int y);
int year,month,day,number,
int i,sum,count;
cout<< "请输入你要查询的年月日: ";
cin>>year>> month>>day; //首先输入三个数:年 月 日
while(inputcheck(year,month,day))
{
cout<< "请输入你要查询的年月日: ";
cin>>year>> month>>day; //首先输入三个数:年 月 日
}
while(year!=0&&month!=0 && month!=0)
{
sum=0;
count=0;
for(i=1;i<=(year-1);i++)//计算闰年个数
{
if((i%4==0&&i%100!=0)||i%400==0)
++count;
}
sum=(year-1-count)*365+count*366;//计算公元1到公元(year-1)天数
switch(month)//先按非闰年计算总天数
{
case 1: sum+=day;break;
case 2:sum+=31+day;break;
case 3:sum+=60+day;break;
case 4:sum+=91+day;break;
case 5:sum=121+day;break;
case 6:sum+=152+day;break;
case 7:sum+=182+day;break;
case 8:sum+=213+day;break;
case 9:sum+=244+day;break;
case 10:sum+=274+day;break;
case 11:sum+=305+day;break;
case 12:sum+=335+day;break;
default:cout<<"输入月份错误!\n"<<endl;break;
}
if((year%4==0&&year%100!=0)||year%400==0)//判断year年是否为闰年,是闰年月份大于2总天数加1
if(month>2)sum=sum+1;
number=sum%7;//计算星期几
cout<<"这一天是星期:"<<number<<"\n"<<endl;
cout<< "请输入你要查询的年月日: ";
cin>>year>> month>>day; //首先输入三个数:年 月 日
while(inputcheck(year,month,day))
{
cout<< "请输入你要查询的年月日: ";
cin>>year>> month>>day; //首先输入三个数:年 月 日
}
}
}
int inputcheck(int year,int month,int day)
{
int x=0;
if((year<=0||month<=0&&day>0))//输入的年月日必须为正数
{
cout<<"你输入的日期不正确,输入的年月日必须为正数!\n"<<endl;
x=1;
}
if(!(year%4==0&&year%100!=0||year%400==0))//非闰年二月day大于28数据就判断为错误,返回重新输入
if(month==2)
if(day>28)
{
cout<<"你输入的日期不正确,非闰年二月day不能大于28!\n"<<endl;
x=1;
}
if(year%4==0&&year%100!=0||year%400==0)//闰年二月大于29就判断为错误,返回重新输入
if(month==2)
if(day>29)
{
cout<<"你输入的日期不正确,闰年二月不能大于29!\n"<<endl;
x=1;
}
if(month==4||month==6||month==9||month==11)//小月份day不能超过30,返回重新输入
if(day>30)
{
cout<<"你输入的日期不正确,小月份day不能超过30!\n"<<endl;
x=1;
}
if(month==1||month==3||month==5||month==7||month==10||month==12)
if(day>31)
{
cout<<"你输入的日期不正确,大月份day不能超过31!\n"<<endl;//小月份day不能超过30
x=1;
}
return x;
}
展开阅读全文