- 论坛徽章:
- 0
|
一个输出日期,星期的代码:
#include <iomanip.h>
class Day
{
private:
int year;//保存年份
int month;
int nday;
int xqday;//星期
bool yleap;//是否闰年
int nlyears;//2006年至year的闰年年数
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char* b[7]={"天","一","二","三","四","五","六"};
public:
Day(int);
void addday();
void dayout();
bool leapyear();
int getnlyears();
int getxqday();
};
Day: ay(int ny)
{
year=ny;
yleap=leapyear();
nlyears=getnlyears();
month=1;
nday=1;
xqday=getxqday();
}
bool Day::leapyear()
{
if((year%4==0 && year%100!=0) || (year%400==0))
{
return true;
}
else
return false;
}
int Day::getnlyears()
{
if(year>2006)
{
return (year\4-year\100+year\400)-(2006\4-2006\100+2006\400)-yleap;
}
else if(year<2006)
{
return (2006\4-2006\100+2006\400)-(year\4-year\100+year\400)+yleap;
}
else
return 0;
}
int Day::getxqday()
{
int commonyear;
int temp;
if(year>2006)
{
commonyear=year-2006-nlyears;
temp=(commonyear+2*nlyears)%7;
return temp;
}
else if(year<2006)
{
commonyear=2006-year-nlyears;
temp=-(commonyear+2*nlyears)%7+7;
return temp;
}
else
return 0;
}
void Day::addday()
{
nday++;
if(month!=2)
{
if(nday>a[month])
{
nday=1;
month++;
if(month>12)
{
month=1;
year++;
}
}
}
else if(nday>(28+yleap))
{
nday=1;
month=3;
}
}
void Day::dayout()
{
int tempmonth;//用于打印一个月
int ntemp;
ntemp=xqday+1;
int flag;
cout<<year<<"年日历:"<<endl;
cout.setf(ios::right);
for(int i=1;i<=12;i++)
{
flag=1;
cout<<i<<"月份:"<<endl;
for(int j=0;j<=6;j++)
{
cout.width( ;
cout<<"星期"<<b[j];
}
cout<<endl;
tempmonth=month;
while(tempmonth==month)
{
if(flag==1)
{
cout.width(ntemp* ;
flag=0;
}
else
cout.width( ;
cout<<nday;
addday();
ntemp++;
if(ntemp>7)
{
ntemp=1;
cout<<endl;
}
if(tempmonth!=month)
cout<<endl;
}
}
}
[ 本帖最后由 aux888 于 2006-4-21 19:23 编辑 ] |
|