要计算给定年、月、日是该年的第几天,可以通过以下步骤实现:
- 判断闰年:闰年的判断依据是年份能被4整除且不能被100整除,或者能被400整除。
- 计算每月天数:根据闰年判断,每个月的天数不同,需要特别处理2月。
- 累加天数:从年初到输入日期的天数,累加每个月的天数
具体代码如下:
#include <stdio.h>
int main()
{
int year = 0;//年
int month = 0;//月
int day = 0;//日
unsigned char leap = 0;//闰年的标记
int sum = 0;//天数的总合
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31 };
printf("输入格式为例如:2024空格10空格18\n");
printf("请输入年月日:>");
scanf("%d %d %d", &year, &month, &day);
if (year <= 3000 && year >= 1000 && month <= 12 && month>=1 && day <= 31 && day>=1)//判断是否合法
{
//判断是否为闰年
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
leap = 1;
}
else
{
leap = 0;
}
if(leap == 1 && month == 2 && day > 29)
{
printf("错误,输入的格式不正确\n");
return 0;
}
//if (leap == 1 && month >= 3) sum += 1;
if (leap == 1) arr[2] += 1;
sum += day;//计算输入的天数
for (int i = 0; i < month - 1; i++)
{
sum += arr[i];
}
printf("%d年%d月%d日是该年的第%d天!", year, month,day,sum);
}
else printf("错误,输入的格式不正确\n");
return 0;
}