这2天看到一个关于计算你一共活了多少天的题目,看了之后写了下代码,感觉要珍惜生命了,呵呵 代码如下:
InBlock.gif#include<iostream>
InBlock.gif using namespace std;
InBlock.gif
InBlock.gif struct Date
InBlock.gif{
InBlock.gif         int nYear;
InBlock.gif         int nMouth;
InBlock.gif         int nDay;
InBlock.gif};
InBlock.gif
InBlock.gif bool JudYear( int nYear)
InBlock.gif{
InBlock.gif         if( (nYear % 4 ==0 && nYear % 100 !=0) || nYear % 400 ==0)
InBlock.gif        {
InBlock.gif                 return true;
InBlock.gif        }
InBlock.gif         else
InBlock.gif        {
InBlock.gif                 return false;
InBlock.gif        }
InBlock.gif        
InBlock.gif}
InBlock.gif
InBlock.gif bool CheckDate( Date *p)
InBlock.gif
InBlock.gif{    
InBlock.gif         int aDay[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
InBlock.gif         int aDay2[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
InBlock.gif
InBlock.gif         if ( (p ->nDay) >31 || (p ->nDay) <1 || (p -> nMouth) >12 || (p -> nMouth) <1 || (p -> nYear) <1)
InBlock.gif
InBlock.gif        {
InBlock.gif                 return false;    
InBlock.gif        }
InBlock.gif
InBlock.gif                 bool isLeapYear = JudYear( (p ->nYear));
InBlock.gif
InBlock.gif                 if (isLeapYear)
InBlock.gif
InBlock.gif                {
InBlock.gif
InBlock.gif                         if ( (p ->nDay) > aDay2[(p ->nMouth)])
InBlock.gif
InBlock.gif                        {
InBlock.gif
InBlock.gif                                 return false;
InBlock.gif
InBlock.gif                        }
InBlock.gif
InBlock.gif                }
InBlock.gif
InBlock.gif                 else
InBlock.gif
InBlock.gif                {
InBlock.gif
InBlock.gif                         if ( (p ->nDay) > aDay[(p ->nMouth)])
InBlock.gif
InBlock.gif                        {
InBlock.gif
InBlock.gif                                 return false;
InBlock.gif
InBlock.gif                        }
InBlock.gif
InBlock.gif                }
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif}
InBlock.gif
InBlock.gif //获得现在年到生日年一共多少天
InBlock.gif
InBlock.gif int GetYear( int nBeforYear, int nCurreYear)    
InBlock.gif{
InBlock.gif                 int nSum = 0;
InBlock.gif                 int nNum = ( nCurreYear - nBeforYear ) * 365;
InBlock.gif                 for ( nBeforYear;nBeforYear < nCurreYear;nBeforYear++)
InBlock.gif                {
InBlock.gif                         if ( JudYear(nBeforYear) )
InBlock.gif                        {
InBlock.gif                                        nSum += 1;
InBlock.gif                        }
InBlock.gif                         else
InBlock.gif                        {
InBlock.gif                                nSum = nSum;
InBlock.gif                        }
InBlock.gif                }
InBlock.gif
InBlock.gif                 return ( nSum + nNum ) ;
InBlock.gif}
InBlock.gif
InBlock.gif //获取生日月份是一年中的多少天数
InBlock.gif
InBlock.gif int GetBeforMouth( int nBeforMouth)
InBlock.gif{
InBlock.gif         int aDay[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
InBlock.gif         int aDay2[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
InBlock.gif         int nSum = 0;
InBlock.gif         if ( JudYear(nBeforMouth) )
InBlock.gif        {
InBlock.gif                 for ( int i = 1; i < nBeforMouth;i++)
InBlock.gif                {
InBlock.gif                        nSum += aDay2[i];
InBlock.gif                }
InBlock.gif        }
InBlock.gif         else
InBlock.gif        {
InBlock.gif                 for ( int i = 1; i < nBeforMouth;i++)
InBlock.gif                {
InBlock.gif                        nSum += aDay2[i];
InBlock.gif                }
InBlock.gif        }
InBlock.gif         return nSum;
InBlock.gif
InBlock.gif}
InBlock.gif
InBlock.gif
InBlock.gif int main()
InBlock.gif{
InBlock.gif        Date BeforDate = {0};
InBlock.gif        Date NowDate = {0};
InBlock.gif         int nYear = 0;
InBlock.gif         int nSum = 0;
InBlock.gif        cout<< "请输入你的生日,请按年月日来进行输入"<<endl;
InBlock.gif        cin>>BeforDate.nYear>>BeforDate.nMouth>>BeforDate.nDay;
InBlock.gif         if ( ! CheckDate( &BeforDate) )
InBlock.gif        {
InBlock.gif                cout<< "输入日期有错误"<<endl;
InBlock.gif        }
InBlock.gif        cout<< "请输入当前的时间,请按年月日来进行输入"<<endl;
InBlock.gif        cin>>NowDate.nYear>>NowDate.nMouth>>NowDate.nDay;
InBlock.gif         if ( ! CheckDate( &NowDate ) )
InBlock.gif        {
InBlock.gif                cout<< "输入日期有错误"<<endl;
InBlock.gif        }
InBlock.gif        
InBlock.gif        cout<<endl;
InBlock.gif        nYear = GetYear(BeforDate.nYear,NowDate.nYear);
InBlock.gif        nSum = nYear - GetBeforMouth(BeforDate.nMouth) + GetBeforMouth(NowDate.nMouth) - BeforDate.nDay + NowDate.nDay;
InBlock.gif        cout<< "一共活了"<<nSum<< "天"<<endl;
InBlock.gif
InBlock.gif         return 0;
InBlock.gif}