编程输入年、月、日三个整数(保证是合法日期),输出这一天是这一年的第几天。 输入样例: 2015 10 31 输出样例: 304 输入样例: 2060 12 31 输出样例: 366 用C语言
时间: 2024-10-13 11:17:19 浏览: 37
在C语言中,你可以通过计算从年初到给定日期的天数来实现这个功能。这里是一个简单的示例程序,它使用了`calendar`库来进行日期处理:
```c
#include <stdio.h>
#include <time.h>
int getDaysInMonth(int year, int month) {
struct tm date = {0};
date.tm_year = year - 1900;
date.tm_mon = month - 1; // months start from 0 in C's time_t
if (month <= 2) { // Check for leap year before February
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 29;
}
else {
return 28;
}
} else {
switch(month) {
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
}
int main() {
int year, month, day;
printf("Enter year, month, and day: ");
scanf("%d %d %d", &year, &month, &day);
date.tm_mday = day;
// Ensure the input is a valid date
if (timegm(&date) == -1) {
printf("Invalid date.\n");
return 1;
}
int total_days = 0;
for (int i = 0; i < month; ++i) {
total_days += getDaysInMonth(year, i + 1);
}
total_days += day;
printf("This day is the %dth day of the year.\n", total_days);
return 0;
}
```
在这个程序中,我们首先获取输入的年份、月份和日期,然后根据闰年规则和每个月的天数计算总天数。最后输出这一天是一年的第几天。
阅读全文