用C语言输入自己的生日,统计从出生至今过了多少个小时,统计距离最近的节假日的的天数,统计该日期是该年的多少天,是星期几
时间: 2024-03-10 12:46:39 浏览: 29
可以使用C语言中的time.h库和struct tm结构体来实现上述功能。
下面是一个示例代码,可以输入一个生日日期,然后分别统计从出生至今过了多少个小时,距离最近的节假日的的天数,该日期是该年的多少天,是星期几:
```c
#include <stdio.h>
#include <time.h>
int main() {
int year, month, day;
printf("请输入生日日期(格式为YYYY-MM-DD):");
scanf("%d-%d-%d", &year, &month, &day);
// 计算从出生至今过了多少个小时
time_t birth_time = mktime(&(struct tm){0, 0, 0, day, month-1, year-1900});
time_t now_time = time(NULL);
double hours = difftime(now_time, birth_time) / 3600;
printf("从出生至今已过了%.0lf个小时\n", hours);
// 计算距离最近的节假日的天数
struct tm new_year = {0, 0, 0, 1, 0, year};
time_t new_year_time = mktime(&new_year);
double days_to_new_year = difftime(new_year_time, now_time) / 86400;
if (days_to_new_year < 0) {
new_year.tm_year++;
new_year_time = mktime(&new_year);
days_to_new_year = difftime(new_year_time, now_time) / 86400;
}
printf("距离最近的节假日(元旦)还有%.0lf天\n", days_to_new_year);
// 计算该日期是该年的多少天
struct tm t = {0};
t.tm_year = year - 1900;
t.tm_mon = month - 1;
t.tm_mday = day;
time_t time = mktime(&t);
int day_of_year = t.tm_yday + 1;
printf("该日期是该年的第%d天\n", day_of_year);
// 计算该日期是星期几
char *weekday[] = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
int w = t.tm_wday;
printf("该日期是%s\n", weekday[w]);
return 0;
}
```
该代码中,先使用scanf函数输入生日日期。然后,使用mktime函数将该日期转换为time_t类型的时间戳,并计算从出生至今过了多少个小时。接着,计算距离最近的节假日(元旦)的天数。如果元旦已经过去了,则将年份加1计算下一年的元旦。然后,通过tm_yday成员获取该日期是该年的第几天,并输出结果。最后,通过tm_wday成员获取该日期是星期几,并输出结果。
阅读全文