c语言中给出生日 怎么比较;年龄大小
时间: 2024-12-09 10:18:27 浏览: 8
C语言中的随机数发生器
4星 · 用户满意度95%
在C语言中,如果你需要比较两个日期的先后顺序以及计算年龄,通常会涉及到结构体来存储生日信息,并使用时间函数来进行计算。这里是一个简单的例子,假设我们有一个`Person`结构体,包含一个表示出生日期的`birthday`成员:
```c
#include <stdio.h>
#include <time.h>
typedef struct {
time_t birthdate; // 以秒为单位的时间戳
} Person;
// 计算年龄的辅助函数
time_t current_time() {
return time(0);
}
int calculate_age(Person person) {
time_t now = current_time();
double age_diff = difftime(now, person.birthdate) / (60 * 60 * 24 * 365); // 年平均天数近似
return age_diff + floor(age_diff); // 返回整年的年龄并四舍五入
}
// 比较日期
int compare_birthdays(Person p1, Person p2) {
if (p1.birthdate > p2.birthdate)
return 1; // p1比p2大
else if (p1.birthdate < p2.birthdate)
return -1; // p1比p2小
else
return 0; // 同年同月同日
}
int main() {
Person person1 = {timegm(strptime("1990-01-01", "%Y-%m-%d", NULL))};
Person person2 = {timegm(strptime("1985-12-31", "%Y- calculate_age(person2);
int result_compare = compare_birthdays(person1, person2);
printf("Person 1 is %d years older than Person 2.\n", result_age);
printf("Person 1's birthday comes before Person 2's: %d\n", result_compare == 1 ? "Yes" : "No");
return 0;
}
```
在这个示例中,我们首先将字符串形式的日期转换成时间戳,然后通过`calculate_age`函数计算年龄差,`compare_birthdays`函数则用于比较两人的生日。注意,这个代码片段只是一个简化的版本,实际应用中可能需要处理闰年等复杂情况。
阅读全文