输入一个学生的生日(输入格式年-月-日,如1980-1-1),再输入当前日期, 输出该生的实足年龄多少岁。(不必特别考虑闰年的特殊情况)使用c语言编写
时间: 2024-10-21 08:01:31 浏览: 22
你可以使用 C 语言的头文件 `stdio.h` 和 `time.h` 来实现这个功能。首先,你需要获取当前的系统时间(以时间点表示),然后根据用户输入的出生日期减去它来得到学生的真实年龄。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <time.h>
// 定义结构体存放日期信息
struct Date {
int year, month, day;
};
void input_date(struct Date *date) {
printf("请输入学生的生日 (格式:年-月-日): ");
scanf("%d-%d-%d", &date->year, &date->month, &date->day);
}
int age_from_dates(struct Date birth, time_t current_time) {
struct tm birthday = { .tm_year = birth.year - 1900, // 注意调整为从1900年开始计数
.tm_mon = birth.month - 1,
.tm_mday = birth.day };
return difftime(mktime(&birthday), current_time) / (60 * 60 * 24 * 365); // 计算年龄,忽略闰年影响
}
int main() {
struct Date student_birthday;
struct tm current_time; // 使用gmtime_r获取格林尼治时间
time_t current_timestamp;
// 获取当前时间
time(¤t_timestamp);
localtime_r(¤t_timestamp, ¤t_time);
// 输入学生的生日
input_date(&student_birthday);
// 计算年龄并输出
int age = age_from_dates(student_birthday, mktime(¤t_time));
printf("该学生的实际年龄是 %d 岁。\n", age);
return 0;
}
```
这个程序假设每年都是365天,所以不会考虑到闰年的情况。如果你想要精确地考虑闰年,你需要修改 `difftime` 的计算部分以包含闰年的额外一天。
阅读全文