C语言输入某年某月某日,判断这一天是这一年的第几天(含判断闰年)
代码
//输入某年某月某日,判断这一天是这一年的第几天?
#include<stdio.h>
//判断闰年函数
int isLeapYear(int year)
{
//闰年,能被4整除但不能被100整除,或能被400整除
if((year%4==0 && year%100!=0) || year%400==0)
{
return 1;
}
return 0;
}
//计算某年某月某日是第几天
int calculateDays(int year,int month,int day)
{
int i; //循环变量
int days=0; //存放总天数
//存放平年每个月的天数,有效下标从1开始
int days_of_month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i=1;i<month;i++)
{
days=days+days_of_month[i];//计算包含全部月份的天数
}
days=days+day; //加上不全月份的天数
//如果是闰年且包含全部2月份
if(isLeapYear(year) && month>=3)
{
days=days+1; //天数+1,因为2月份多一天
}
return days;
}
int main()
{
int year,month,day;
printf("请依次输入年,月,日,用空格隔开:\n");
scanf("%d %d %d",&year,&month,&day);
printf("这一天是这一年的第%d天",calculateDays(year,month,day));
return 0;
}
运行示例