编写C语言程序,输入一位学生的年日,并输入当前的日期,输出该学生的实际年龄
时间: 2024-09-07 11:03:20 浏览: 52
在C语言中,编写这样的程序需要获取用户输入、计算两个日期之间的差值以及处理闰年的规则。以下是一个简单的示例:
```c
#include <stdio.h>
#include <time.h>
// 定义一个函数计算两个时间戳之间的差值(以秒为单位)
long long days_between_dates(time_t date1, time_t date2) {
return difftime(date2, date1) / (60 * 60 * 24);
}
int main() {
// 获取用户的出生年月日
int year, month, day;
printf("请输入学生的出生年月日(格式:YYYY MM DD): ");
scanf("%d %d %d", &year, &month, &day);
// 获取当前日期
time_t current_time = time(NULL); // 获取系统当前时间
struct tm* curr_tm = localtime(¤t_time); // 转换为tm结构体
// 将当前日期转换为时间戳
time_t birth_date = mktime(&(struct tm){
.tm_year = curr_tm->tm_year - 1900 + year,
.tm_mon = curr_tm->tm_mon - 1 + month,
.tm_mday = day,
.tm_hour = 0,
.tm_min = 0,
.tm_sec = 0,
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = -1
});
// 计算并输出年龄
long long age_days = days_between_dates(birth_date, current_time);
int age_years = age_days / 365; // 粗略地假设每年都是365天
printf("学生的真实年龄大约为:%d岁\n", age_years);
// 更精确的年龄计算可以考虑闰年因素,但这会更复杂一些
阅读全文