用简单c语言输入年月日 输出是这一年的第几天 注意判断闰年
时间: 2024-10-08 12:24:43 浏览: 39
C语言案例:键盘输入年月日,计算这一天是这一年的第几天.docx
为了编写一个简单的C语言程序,用于计算给定日期是一年中的第几天,并考虑到闰年,你需要考虑以下几个步骤:
1. **闰年判断**:
- 判断是否为闰年的规则:能被4整除但不能被100整除,或者能被400整除的年份为闰年。
2. **计算天数**:
- 一月有31天,二月闰年有29天,非闰年有28天。
- 三月至十二月,每月正常天数不变。
以下是一个简单的C程序示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int days_in_month(int month, bool leap_year) {
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return leap_year ? 29 : 28;
default: return -1; // 非法月份,返回错误
}
}
int day_of_year(int year, int month, int day) {
int total_days = 0;
for (int i = 1; i < month; ++i) {
total_days += days_in_month(i, is_leap_year(year));
}
total_days += day;
return total_days;
}
int main() {
int year, month, day;
printf("请输入年份、月份(1-12)和日期(1-31): ");
scanf("%d %d %d", &year, &month, &day);
if (month < 1 || month > 12 || day < 1 || day > days_in_month(month, is_leap_year(year))) {
printf("输入的日期无效。\n");
return 1;
}
int result = day_of_year(year, month, day);
printf("这一天是一年中的第%d天。\n", result);
return 0;
}
```
这个程序首先检查输入的年份是否为闰年,然后计算给定月份之前的总天数,加上当前天数,得到一年中的总天数。如果输入的月份或日期不在合法范围内,会给出提示。
阅读全文