C语言实现:输入一个日期,计算并输出该日期是当年的第几天
1.基本知识:
(1)闰年的判断方法:
- 世纪年(能被100整除的年份):可以整除400为闰年;
- 非世纪年(不能被400整除的年份):可以整除4为闰年。
(2)闰年2月29天,平年2月28天;
(3)闰年1-12月分别为:31,29,31,30,31,30,31,31,30,31,30,31天,
平年1-12月分别为:31,28,31,30,31,30,31,31,30,31,30,31天
2.代码:
#include<stdio.h>
#include<stdlib.h>
int is_leap_year(int year) //该函数用来判断是否为闰年
{
if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)
{
return 1; //闰年返回1
}
else
{
return 0; //非闰年返回0
}
}
int com(int year, int month, int day)
{
int mon_day[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //12个月按顺序依次有多少天,默认2月有28天
int ret = is_leap_year(year);
int mon = 0;
int i = 0;
if (ret)
{
mon_day[1] = 29; //若年份为闰年则二月为29天
}
for (i = 0; i < month - 1; i++) //根据月份确定循环的次数,
{
mon += mon_day[i];
}
return mon + day;
}
int main()
{
int year = 0;
int month = 0;
int day = 0;
int num = 0;
printf("请分别输入年、月、日(如:2012 9 7):>");
scanf("%d%d%d", &year, &month, &day);
printf("该日期是当年的第 %d 天\n", com(year, month, day));
system("pause");
return 0;
}
3.例如:
输入:2012 3 1,结果为
输入2009 3 1,结果为