修改了explorewin存在的问题,可以计算任意两天之间所隔的天数,首先输入生日,再输入今天的日期,电脑会自动计算。
代码如下:
#include
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
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:"<
cin>>biryear;
cout<<"month=";
cin>>birmonth;
cout<<"day=";
cin>>birday;
cout<<"input a date:"<
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="<
int counter=0;//counter用来作记数器,计闰年数
for(int i=biryear+1;i
isRunNian=((i%4==0)&&(i%100!=0)||(i%400==0)); //判断是否为闰年
if(isRunNian==true)
{
counter++;
isRunNian=false;
}
}
cout<<"run nian= "<
cout<<"ping nian="<
//cout<<"total months="<
if (age>=0)
{
totalday=7*31*age+4*30*age+(counter*29+(age-counter)*28)+ff-bb;//总天数等于出生年剩余天数+周岁数(未包括今年)+ 今天是今年的第几天
}
else
{
totalday=ff;
}
cout<<"共活了"<
}
又作下修改,感觉还有点问题.出生那年也应该单算,算出出生那天是那年的第几天,判断一下出生那年是不是润年,看是用366减去它还是用365减去它,若是想是今年出生的呢,只用今天是今年的第几天减生日是今年第几天就行了
#include
#include
int dayfun(int nowYear,int nowMonth,int nowDay)//´Ëº¯Êý¼ÆËãijÌìÊÇijÄêµÄµÚ¼¸Ìì
{
bool isleap=((nowYear%4==0)&&(nowYear%100!=0)||(nowYear%400==0)); //½ñÄêÊÇÈòÄêÂð
int whichday=0;
for(int i=1;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 (isleap==true) { whichday+=29; break; }
else
{ whichday+=28; break; }
}
}
return whichday+nowDay;
}
int main(void)
{
int nowYear,nowMonth,nowDay;
int biryear,birmonth,birday;
bool isleap;
struct tm *times; //¶¨Òåʱ¼äÖ¸Õë±äÁ¿.....(Ö»ÄÜÓÃÖ¸Õë)
time_t t; //¶¨Òåϵͳʱ¼ä±äÁ¿,¹©Ìṩϵͳʱ¼ä
t = time(0); //µ±Ç°ÏµÍ³Ê±¼ä¸ø±äÁ¿t
times = localtime(&t); //°Ñϵͳʱ¼ä±äÁ¿Ç¿ÖÆת»»³Étm½á¹¹ÌåÐÎʽʱ¼ä
nowYear=(times->tm_year+1900);//get this year
nowMonth=times->tm_mon;//get this month
nowDay=times->tm_mday;//get today
cout<<"input a birthday:"<
cin>>biryear;
cout<<"month=";
cin>>birmonth;
cout<<"day=";
cin>>birday;
int age=nowYear-biryear;//get age
cout<<"age="<
int counter=0;//var counter is used to calculate how many leap years there is
for(int i=biryear+1;i
isleap=((i%4==0)&&(i%100!=0)||(i%400==0)); //is the year is a leap year
if(isleap==true)
{
counter++;
isleap=false;
}
}
cout<<"leap= "<
cout<<"not leap="<
int totalday=0;
if (age>=1)
{
int temp=0;
int ff=dayfun(nowYear,nowMonth,nowDay);//Çó½ñÌìÊǽñÄêµÄµÚ¼¸ÌìµÄº¯Êý
cout<<"today is the "<
cout<<"birthday was the "<
{
temp=366-bb;
}
else
{
temp=365-bb;
}
totalday=temp+7*31*(age-1)+4*30*(age-1)+(counter*29+(age-1-counter)*28)+ff;//×ÜÌìÊýµÈÓÚ³öÉúÄêÊ£ÓàÌìÊý+ÖÜËêÊý£¨Î´°üÀ¨½ñÄêºÍ³öÉúÄ꣩+ ½ñÌìÊǽñÄêµÄµÚ¼¸Ìì
}
else
{
int day1=dayfun(nowYear,nowMonth,nowDay);//½ñÌìÊǽñÄêµÄµÚ¼¸Ìì
cout<<"today is the "<
cout<<"birthday was the "<
}
cout<<"total live"<
}
#include
using namespace std;
void main()
{
int day,month,year,k,leap;
int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
cout<<"\nplease input year,month,day\n";
cin>>year>>month>>day;
leap=(year%4==0&&year%100!=0)||year%400==0;
for(k=0;k
cout<<"It is the "<
//以上方法最简单,细心揣测你就会发现它的好
你们都忽略了一个问题。其实还需要一个参数,那就是人所在的时区。如果一个人在本初子午线那边,就要多加一天,等等。
恩~
give me EMAIL
SEND it to you