要求:1.判断输入的年、月、日是否合法 2.打印出该月的日历
#include "iostream.h"
#include "iomanip.h"
class Date
{
public:
void SetDate(int,int,int);
int IsLeapYear();
int JudgeWeek();
void DisplayDate();
void DisplayYear();
void DisplayYearMonth();
void DisplayCalendar();
private:
int year;
int month;
int day;
};
int IsLeapYears(int year)
{
if((year%4==0)&&(year%100!=0)||year%400==0)
return 1;
else
return 0;
}
void Date::SetDate(int y,int m,int d)
{
loop1:if(y<1900||y>2100) // 1--
{
cout<<"Error 1: 年份范围1900--2100,请重新输入年月日."<
cin>>YEAR>>MONTH>>DAY;
y=YEAR;m=MONTH;d=DAY;
goto loop1;
}
else
year=y;
if(m<=0||m>=13) //1--12
{
cout<<"Error 2: 月份范围为1--12,请重新输入年月日."<
cin>>YEAR>>MONTH>>DAY;
y=YEAR;m=MONTH;d=DAY;
goto loop1;
}
else
month=m;
if(d>=32||d<=0) //1--31
{
cout<<"Error 3: 天数的范围为1--31,请重新输入年月日."<
cin>>YEAR>>MONTH>>DAY;
y=YEAR;m=MONTH;d=DAY;
goto loop1;
}
if((IsLeapYear())&&(m==2)&&(d>=30)) //leap year 2: 1--29
{
cout<<"Error 4: 闰年2月的天数范围为1--29,请重新输入."<
cin>>YEAR>>MONTH>>DAY;
y=YEAR;m=MONTH;d=DAY;
goto loop1;
}
else if((!IsLeapYear())&&(m==2)&&(d>=29)) //not leap year 2: 1--28
{
cout<<"Error 5: 平年2月的天数范围为1--28,请重新输入."<
cin>>YEAR>>MONTH>>DAY;
y=YEAR;m=MONTH;d=DAY;
goto loop1;
}
else
day=d;
if((m==4||m==6||m==9||m==11)&&d>30)
{
cout<<"Error 6: 4、6、9、11月的天数范围为1--30,请重新输入."<
cin>>YEAR>>MONTH>>DAY;
y=YEAR;m=MONTH;d=DAY;
goto loop1;
}
}
int Date::IsLeapYear()
{
if((year%4==0)&&(year%100!=0)||year%400==0)
return 1;
else
return 0;
}
int Date::JudgeWeek()
{
/*//// 1900 年 1 月 1 日 星期一*/
int leapdays[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int a[13];
int sum,total;
sum=0;
a[0]=0;sum=0;
for(int i=1;i<=12;i++)
a[i]=a[i-1]+leapdays[i];
for(int m=1900;m<=year;m++)
if(IsLeapYears(m))
sum++;
total=((year-1900)*365+sum+a[month-1])%7;
if(!IsLeapYear()&&month<=2)
total++;
return total;
}
void Date::DisplayDate()
{
cout<
void Date::DisplayYear()
{
cout<
void Date::DisplayYearMonth()
{
cout<
void Date::DisplayCalendar()
{
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int week=JudgeWeek();
int i;
if(IsLeapYear()&&month==2)
a[2]=29;
cout<<" "<
goto loop2;
for(i=0;i
{
week++;
cout<
cout<
cout<
void DisplayLeapYear(int start,int end)
{
int i,temp,t;
t=0;
if(start>end)
{
temp=start;
start=end;
end=temp;
}
for(i=start;i<=end;i++)
if(IsLeapYears(i))
{
cout< t++;
if(t%10==0)
cout<
}
void main()
{
for(;;)
{
loop: Date One;
char c;
int year,month,day;
cout<<"请输入年、月、日(1900--2100):"<
One.SetDate(year,month,day);
//One.DisplayDate();
/*if(One.IsLeapYear())
{
One.DisplayYear();
cout<<"year 年 是闰年。"<
else
{
One.DisplayYear();
cout<<"year 年 是平年。"<
One.DisplayCalendar();
cout<
cout<
goto loop;
else
break;
}
}
文字可能无法说清楚,你的邮箱?或QQ,界面设计也是十分重要的。