Ivan

交流能优化思想。
posts - 9, comments - 22, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理

一个万年历的C++实现代码

Posted on 2006-04-24 13:16 IvanCL 阅读(3799) 评论(10)  编辑 收藏 引用
#include < iostream >
#include
< iomanip >
using   namespace  std;
int  FistDayofYear( int  y);
int  DaysofMonth( int  m);
void  PrintMonth( int  m);
void  PrintHead( int  m);
bool  LeapYear( int  y);
int  WeekDay,year;
void  main()
{
 INPUT:
 cerr
<< " 请输入年份(>1):  " ;
 cin
>> year;
 WeekDay
= FistDayofYear(year);
 cout
<< " \n\n                   " << year << " 年\n " ;
 cout
<< " ========================================================== " ;
 
for ( int  a = 1 ;a < 13 ;a ++ )
  PrintMonth(a);
 cout
<< endl;
 
int  r = 0 ,u = 0 ;
 cout
<< " 继续打1,退出打0  :  " ;
 cin
>> r;
 
if (r > u)
  
goto  INPUT;
 
else
  
goto  END;
 END:;
}

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 ;
  
if (WeekDay == 0 )
  
{
   cout
<< endl;
   cout
<< setw( 5 ) << "               " ;
  }

 }

}

void  PrintHead( int  m)
{
 cout
<< " \n\n " << setw( 5 ) << m;
 cout
<< " 月          日   一   二   三   四   五   六   \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  FistDayofYear( int  y)
{
 
long  m;
 m
= y * 365 ;
 
for ( int  i = 1 ;i < y;i ++ )
  m
+= LeapYear(i);
 
return  m %= 7 ;
}

 


Feedback

# re: 一个万年历的C++实现代码  回复  更多评论   

2006-04-26 16:07 by 小歪
写的简单又易于实现!高!

# re: 一个万年历的C++实现代码  回复  更多评论   

2006-05-13 21:35 by Gohan
哈哈不支持公元前

# re: 一个万年历的C++实现代码  回复  更多评论   

2006-07-29 12:07 by Toto0066
公元前好像没必要吧

# re: 一个万年历的C++实现代码  回复  更多评论   

2006-09-02 23:41 by zhouxiquan
没有注释看得真是很难啊

# re: 一个万年历的C++实现代码  回复  更多评论   

2006-12-12 13:50 by KKNd
那个..润月的问题...2000以后...2月都是28天的....

# re: 一个万年历的C++实现代码  回复  更多评论   

2006-12-25 09:34 by luka.li
写得不错
多加注释更好!

# re: 一个万年历的C++实现代码  回复  更多评论   

2007-03-28 19:12 by Ian
实在高明!思路清晰富有层次感!

# re: 一个万年历的C++实现代码  回复  更多评论   

2007-04-19 21:35 by 丫头
好!不过有疑问呀

# re: 一个万年历的C++实现代码  回复  更多评论   

2009-04-13 09:10 by fdsa
每个月的第一行都回出现位置不对啊,要修改修改?

# re: 一个万年历的C++实现代码  回复  更多评论   

2012-12-23 13:40 by chchpd
真实厉害!

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理