程序设计题二: 打印日历( 急啊 最好2天之内)

2025-03-13 00:42:00
推荐回答(2个)
回答1:

要求: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,请重新输入年月日."< int YEAR,MONTH,DAY;
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,请重新输入年月日."< int YEAR,MONTH,DAY;
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,请重新输入年月日."< int YEAR,MONTH,DAY;
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,请重新输入."< int YEAR,MONTH,DAY;
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,请重新输入."< int YEAR,MONTH,DAY;
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,请重新输入."< int YEAR,MONTH,DAY;
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<<" "< < < < <if(week==7)
goto loop2;
for(i=0;i cout<loop2:for(int t=1;t<=a[month];t++)
{
week++;
cout< if(week%7==0)
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):"<cin>>year>>month>>day;
One.SetDate(year,month,day);
//One.DisplayDate();
/*if(One.IsLeapYear())
{
One.DisplayYear();
cout<<"year 年 是闰年。"<}
else
{
One.DisplayYear();
cout<<"year 年 是平年。"<}*/
One.DisplayCalendar();
cout<cin>>c;
cout<if(c=='Y'||c=='y')
goto loop;
else
break;
}

}

回答2:

文字可能无法说清楚,你的邮箱?或QQ,界面设计也是十分重要的。