代碼如下:
#include <iostream.h>
int dayfun(int nowYear,int nowMonth,int nowDay)//此函數計算今天是今年的第幾天
{
bool isrunnian=((nowYear%4==0)&&(nowYear%100!=0)||(nowYear%400==0)); //今年是閏年嗎
int whichday=0;
for(int i=1;i<nowMonth;i++)
{
switch(i) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
{ whichday+=31; break; }
case 4: case 6: case 9: case 11:
{ whichday+=30; break; }
case 2:
if (isrunnian==true) { whichday+=29; break; }
else
{ whichday+=28; break; }
}
return whichday+nowDay;
}
}
int main(void)
{
int nowYear,nowMonth,nowDay;
int biryear,birmonth,birday;
bool isRunNian;
int ff=0,bb=0,pp; //pp為出生年的天數
cout<<"input a birthday:"<<endl;//以下輸入生日的年月日
cout<<"year=";
cin>>biryear;
cout<<"month=";
cin>>birmonth;
cout<<"day=";
cin>>birday;
cout<<"input a date:"<<endl;//以下輸入今天的年月日
cout<<"year=";
cin>>nowYear;
cout<<"month=";
cin>>nowMonth;
cout<<"day=";
cin>>nowDay;
ff=dayfun(nowYear,nowMonth,nowDay);//求今天是今年的第幾天的函數
bb=dayfun(biryear,birmonth,birday);//求出生日是出生年的第幾天的函數
int age=nowYear-biryear;//得到周歲數
cout<<"age="<<age<<" years"<<endl;
int counter=0;//counter用來作記數器,計閏年數
for(int i=biryear+1;i<nowYear;i++)//此循環算出閏年總數(出生年,今年未算在內)
{
isRunNian=((i%4==0)&&(i%100!=0)||(i%400==0)); //判斷是否為閏年
if(isRunNian==true)
{
counter++;
isRunNian=false;
}
}
cout<<"run nian= "<<counter<<" years"<<endl;
int pingYear=age-counter;//平年數
cout<<"ping nian="<<pingYear<<" years"<<endl;
//cout<<"total months="<<age*12+nowMonth<<endl;
int totalday=0;
if (age>=0)
{
totalday=7*31*age+4*30*age+(counter*29+(age-counter)*28)+ff-bb;//總天數等於出生年剩余天數+周歲數(未包括今年)+ 今天是今年的第幾天
}
else
{
totalday=ff;
}
cout<<"***活了"<<totalday<<"天"<<endl;
return 0;
}