C语言,输入当前日期和某人的出生月日,输出下一个生日距离今天还有多少天,不使用<time.h>库
时间: 2024-11-16 12:20:45 浏览: 13
C语言time.h从头学
在C语言中,计算一个人的下一个生日距离今天的天数,不使用`<time.h>`库,可以手动处理月份和年份的关系。首先,我们需要获取当前日期,然后根据用户提供的出生日期进行计算。以下是一个简单的示例:
```c
#include <stdio.h>
// 函数用于获取当前日期(假设每个月有30天)
int get_current_day() {
struct tm now; // 当前时间
time_t current_time = time(NULL);
localtime_r(¤t_time, &now);
return now.tm_mday;
}
// 计算两个日期之间的差值(忽略年份,只考虑月份和日)
int days_between(int month1, int day1, int month2, int day2) {
if (month1 > month2 || (month1 == month2 && day1 >= day2)) {
return 365 - (get_current_day() - day2 + 1); // 如果第一个日期晚于第二个,从下个月的第一天开始计
} else {
return get_current_day() - day1 + (30 * (month2 - month1)); // 相同月份内直接相减
}
}
int main() {
int current_day = get_current_day();
int birth_month, birth_day;
printf("请输入你的出生月份(1-12): ");
scanf("%d", &birth_month);
printf("请输入你的出生日期: ");
scanf("%d", &birth_day);
int next_birthday_days = days_between(current_day, birth_day, birth_month + 1, 1); // 加一表示到下一个月
if (next_birthday_days <= 0) { // 如果已经过了生日
next_birthday_days += 365; // 跳过今年剩余的日子,加上明年的一整年
}
printf("你的下一个生日距离今天还有 %d 天。\n", next_birthday_days);
return 0;
}
```
阅读全文