编写c++程序实现输入学生的生日(年,月,日)和当前日期(年、月、日),计算该生的实足年龄(?岁零?个月)并输出。
时间: 2023-09-13 07:05:28 浏览: 339
countyear-month-day.rar_c++计算年龄
### 回答1:
这是一个技术问题,我可以回答。以下是一个例子:
#include <stdio.h>
int main() {
int birth_year, birth_month, birth_day;
printf("Enter birth year: ");
scanf("%d", &birth_year);
printf("Enter birth month: ");
scanf("%d", &birth_month);
printf("Enter birth day: ");
scanf("%d", &birth_day);
int current_year, current_month, current_day;
printf("Enter current year: ");
scanf("%d", ¤t_year);
printf("Enter current month: ");
scanf("%d", ¤t_month);
printf("Enter current day: ");
scanf("%d", ¤t_day);
int age = current_year - birth_year;
int month_diff = current_month - birth_month;
int day_diff = current_day - birth_day;
if (month_diff < 0 || (month_diff == 0 && day_diff < 0)) {
age--;
month_diff += 12;
}
printf("The person is %d years, %d months old.\n", age, month_diff);
return 0;
}
### 回答2:
下面是一个用C编写的程序,实现输入学生的生日(年、月、日)和当前日期(年、月、日),计算该生的实足年龄并输出。
```c
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
struct Age {
int years;
int months;
};
struct Age calculateAge(struct Date birthday, struct Date currentDate) {
struct Age age;
age.years = currentDate.year - birthday.year;
age.months = currentDate.month - birthday.month;
if (currentDate.day < birthday.day) {
age.months--;
}
if (age.months < 0) {
age.years--;
age.months += 12;
}
return age;
}
int main() {
struct Date birthday, currentDate;
struct Age age;
printf("请输入学生的生日(年、月、日):");
scanf("%d %d %d", &birthday.year, &birthday.month, &birthday.day);
printf("请输入当前日期(年、月、日):");
scanf("%d %d %d", ¤tDate.year, ¤tDate.month, ¤tDate.day);
age = calculateAge(birthday, currentDate);
printf("该生的实足年龄是:%d岁零%d个月\n", age.years, age.months);
return 0;
}
```
此程序中定义了两个结构体 `Date` 和 `Age`,分别用于存储日期和年龄的信息。`calculateAge` 函数计算实足年龄,通过减去生日年份得到年龄,再计算出月份的差异。如果当前日期的天数小于生日的天数,月份差值减一。如果月份差值为负数,年龄减一,月份差值加上12。最后,在主函数中通过用户输入获取生日和当前日期,并调用 `calculateAge` 函数计算实足年龄,并将结果输出。
### 回答3:
编写C程序实现输入学生的生日(年、月、日)和当前日期(年、月、日),计算该生的实足年龄(?岁零?个月)并输出的代码如下:
```c
#include <stdio.h>
int main() {
int birthYear, birthMonth, birthDay;
int currentYear, currentMonth, currentDay;
int ageYear, ageMonth;
printf("请输入学生的生日(年、月、日):");
scanf("%d%d%d", &birthYear, &birthMonth, &birthDay);
printf("请输入当前日期(年、月、日):");
scanf("%d%d%d", ¤tYear, ¤tMonth, ¤tDay);
// 计算岁数
ageYear = currentYear - birthYear;
// 计算月数
ageMonth = currentMonth - birthMonth;
// 如果当前日期的月份小于出生日期的月份,则年龄减1
if (currentMonth < birthMonth) {
ageYear--;
}
// 如果当前日期的月份等于出生日期的月份,但是当前日期的日期小于出生日期的日期,则年龄减1
else if (currentMonth == birthMonth && currentDay < birthDay) {
ageYear--;
}
// 处理月份数为负数的情况
if (ageMonth < 0) {
ageMonth = 12 + ageMonth;
ageYear--;
}
printf("该生的实足年龄:%d岁零%d个月\n", ageYear, ageMonth);
return 0;
}
```
运行程序后,依次输入学生的生日和当前日期,即可得到该生的实足年龄。注意,这里没有考虑闰年的情况,如有需要,可以根据实际情况进行优化。
阅读全文