拜托大家给讲讲这个用C++编的年历程序

#include<iostream.h>
#include<iomanip.h>

int FirstDayofYear(int y); //计算该年的第一天是星期几
int DaysofMonth(int m); //计算该月的天数
void PrintMonth(int m); // 输出月份  
void PrintHead(int m); // 输出日历标题
bool LeapYear(int y); //判断闰年
int WeekDay,year;
void main()
{
cout<<"请输入年份:";
cin>>year;
WeekDay=FirstDayofYear(year);
cout<<"\n\n "<<year<<" 年\n";
cout<<" ==================================";
for(int a=1;a<13;a++)
PrintMonth(a);
cout<<endl;
}
void PrintMonth(int m)
{
PrintHead(m);
  int day=DaysofMonth(m);
  for (int i=1;i<=day;i++)
{
cout<<setw(5)<<i;
WeekDay=(WeekDay+1)%7; //每7天换一行输出
if(WeekDay==0)
{
cout<<endl;
cout<<setw(5)<<" ";
}
}
}
void PrintHead(int m)
{
cout<<"\n\n"<<setw(5)<<m;
cout<<" Sun Mon Tus Wed Thu Fri Sat\n";
cout<<setw(5)<<" ";
for(int i=0;i<WeekDay;i++)
cout<<setw(5)<<" ";
}
int DaysofMonth(int m)
{
switch(m)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;
case 4:case 6:case 9:case 11:return 30;
case 2:if(LeapYear(year)) return 29;
else return 28;
}
return 0;
}
bool LeapYear(int y)
{
return (y%4==0&&y%100!=0||y%400==0);
}
int FirstDayofYear(int y)
{
long m;
m=y*365;
for(int i=1;i<y;i++)
m+=LeapYear(i); //补上全部闰年的天数
return m%=7; //返回星期几
}


完全看不懂 很急希望大家给讲解下

作者: wangzezhen91   发布时间: 2011-06-16

楼主该找本数据结构看看。。

作者: aa1013911535   发布时间: 2011-06-16