定义日期(Date)结构类型,其中应包括年、月、日三个成员。请实现函数lifeProgress()并编写代码加以验证。该函数接受你的出生日期及当前日期作为参数,计算并返回你的人生使用进度。
说明:按2019年我国居民人均预期寿命77.3岁进行估算;为降低难度,初始版本可以不考虑闰年,按每年365天计算,假设某人出生6900天,则其人生使用进度为6900/(77.3*365)。
下述程序实现了上述题目要求,请将下述程序补充完整,使其可以正确运行。
c++
#include &
定义日期(Date)结构类型,其中应包括年、月、日三个成员。请实现函数lifeProgress()并编写代码加以验证。该函数接受你的出生日期及当前日期作为参数,计算并返回你的人生使用进度。
说明:按2019年我国居民人均预期寿命77.3岁进行估算;为降低难度,初始版本可以不考虑闰年,按每年365天计算,假设某人出生6900天,则其人生使用进度为6900/(77.3*365)。
下述程序实现了上述题目要求,请将下述程序补充完整,使其可以正确运行。
c++
#include <stdio.h>
struct Date {
int month;
};
float lifeProgress(struct Date birth, struct Date today)
{
//monthDays[i-1]表示i月之前该年共经过了多少天
const int monthDays[12] = {
0,
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30
};
//从公元元年起到出生日所历经的天数
int iPassingDaysBirth = birth.year*365 + monthDays[birth.month-1] + birth.day;
//从公元元年起到今天所历经的天数
int iPassingDaysToday =
//从出生到今天经过的天数
int iLivingDays =
return (float)iLivingDays/(77.3f*365.0f);
}
int main()
{
struct Date dBirth={1979,1,16}, dToday={2022,8,24};
scanf("%d %d %d",&dBirth.year,&dBirth.month,&dBirth.day);
scanf("%d %d %d",&dToday.year,&dToday.month,&dToday.day);
printf("Life progress: %.1f%%",100.0*lifeProgress(dBirth,dToday));
return 0;
}
示例输入:
1979 1 16
2022 8 24
说明:依次是出生年月日及当前年月日
<br>
示例输出:
Life progress: 56.4%
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)
答案:
第1空: int year;
第2空: int day;
第3空:today.year*365 + monthDays[today.month-1] + today.day;
第4空:iPassingDaysToday - iPassingDaysBirth;
说明:按2019年我国居民人均预期寿命77.3岁进行估算;为降低难度,初始版本可以不考虑闰年,按每年365天计算,假设某人出生6900天,则其人生使用进度为6900/(77.3*365)。
下述程序实现了上述题目要求,请将下述程序补充完整,使其可以正确运行。
c++
#include <stdio.h>
struct Date {
int month;
};
float lifeProgress(struct Date birth, struct Date today)
{
//monthDays[i-1]表示i月之前该年共经过了多少天
const int monthDays[12] = {
0,
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30
};
//从公元元年起到出生日所历经的天数
int iPassingDaysBirth = birth.year*365 + monthDays[birth.month-1] + birth.day;
//从公元元年起到今天所历经的天数
int iPassingDaysToday =
//从出生到今天经过的天数
int iLivingDays =
return (float)iLivingDays/(77.3f*365.0f);
}
int main()
{
struct Date dBirth={1979,1,16}, dToday={2022,8,24};
scanf("%d %d %d",&dBirth.year,&dBirth.month,&dBirth.day);
scanf("%d %d %d",&dToday.year,&dToday.month,&dToday.day);
printf("Life progress: %.1f%%",100.0*lifeProgress(dBirth,dToday));
return 0;
}
示例输入:
1979 1 16
2022 8 24
说明:依次是出生年月日及当前年月日
<br>
示例输出:
Life progress: 56.4%
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)
答案:
第1空: int year;
第2空: int day;
第3空:today.year*365 + monthDays[today.month-1] + today.day;
第4空:iPassingDaysToday - iPassingDaysBirth;