用c++实现将指定日期转换成从0年0月0日起的天数
时间: 2024-05-12 12:20:53 浏览: 9
以下是用C语言实现将指定日期转换成从0年0月0日起的天数的代码示例:
```c
#include <stdio.h>
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int dayOfMonth(int year, int month) {
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year)) {
return 29;
}
return days[month - 1];
}
int dayOfYear(int year, int month, int day) {
int days = 0;
for (int i = 1; i < month; i++) {
days += dayOfMonth(year, i);
}
return days + day;
}
int daysSince0000(int year, int month, int day) {
int days = 0;
for (int i = 0; i < year; i++) {
days += isLeapYear(i) ? 366 : 365;
}
return days + dayOfYear(year, month, day) - 1;
}
int main() {
int year, month, day;
printf("请输入日期(格式为 YYYY-MM-DD):");
scanf("%d-%d-%d", &year, &month, &day);
int days = daysSince0000(year, month, day);
printf("从0年0月0日起的天数为:%d\n", days);
return 0;
}
```
该程序中,使用`isLeapYear()`函数判断闰年,`dayOfMonth()`函数确定每个月的天数,`dayOfYear()`函数计算当年已经过去的天数,`daysSince0000()`函数计算从0年0月0日起到指定日期的天数。在`main()`函数中,通过读取用户输入的日期,并调用`daysSince0000()`函数,输出从0年0月0日起的天数。