年龄天数的计算(年龄天数的计算(C++))
1、问题描述、问题描述
(1)输入今天的日期(年,月,日)和你的出生日期(年,月,日),计算你在这个世界已经生存了多少天。取值范
围:年:1900 – 2100,月:1 – 12,日:1 – 31
(2)输入期望的年龄,计算还将在这个世界生存的天数。
2、解题算法思想、解题算法思想
(1)对于第一问:我们可以把已经活过的天数分解成整年的天数整年的天数、整月的天数整月的天数以及日的天数日的天数。具体的方法在下一部分详具体的方法在下一部分详
细解释细解释。
(2)对于第二问:还要活得天数还要活得天数=总共要活的天数总共要活的天数–已经活了的天数已经活了的天数。
注注:总共要活的天数和已经活了的天数都可以通过第一问的函数求得。
3、关键函数、关键函数countLiveday( )详解详解
函数功能:计算两个日期间的天数。
函数算法:把总天数拆成整年整年的天数、整月整月的天数以及日日的天数。
%%解说例子解说例子%%:1997-10-19——2020-03-27
函数执行流程:(用上面例子辅以说明用上面例子辅以说明)
——》开始;
——》计算天数的变量daynum置0;
——》计算年的天数,计算方法计算方法:通过for循环从出生那年累加到今年的前一年(1997年年到2019年年);
——》减去出生那年没过的整月天数,计算方法计算方法:通过for循环从1月累减到出生那个月的前一月(1月月到9月月);
——》加上今年到现在过得整月天数,计算方法计算方法:通过for循环从1月累加到现在的前一月(1月月到2月月);
——》减去出生那个月没过的天数,加上现在这个月已过的天数(减去10月的19天,加上3月的27天);
——》返回总天数daynum;
——》结束;
注意点:注意点:
(1)计算天数是要分是否为闰年。
(2)计算月的天数时,可以分别把平年和闰年每月的天数定义在两个数组中。
例如:
int m[ ]={31,28,31,30,31,30,31,31,30,31,30,31};
int n[ ]={31,29,31,30,31,30,31,31,30,31,30,31};
函数代码:
void countLiveday(int a,int b,int c,int a1,int b1,int c1)
{
daynum=0; //变量的初始化,否则每次调用函数,daynum的值就会继续累加,计算错误!!!
int t1=a,t2=a1;
for(;a1<a;a1++) //计算年天数;
{
if(leapYear(a1)==1)
daynum+=366; //闰年天数;
else
daynum+=365; //平年天数;
}
for(int i=0;i<b1-1;i++) //计算出生前没过的月天数;
{
if(leapYear(t2)==1)
daynum-=n[i]; //二月有29天;
else
daynum-=m[i]; //二月有28天;
}
for(int j=0;j<b-1;j++) //计算今年没算的天数;
{
if(leapYear(t1)==1)
daynum+=n[j]; //二月有29天
else
daynum+=m[j]; //二月有28天;
}
daynum=daynum-c1+c; //减去出生那个月没过的天数,加上现在这个月已过的天数;
}
4、完整解法代码、完整解法代码