在公历的一年中,除2月份以外,每月的天数都是固定的。已知某年某月某日,计算该日子是本年度的第几天,首先判断该年份是否为闰年,求出2月份是28天还是29天;再把已过月份每个月的日子加起来,最后加当月的日期数。sum_day计算输入日期的天数,leap函数返回是否是闰年的信息。
/**********************************************************/ /* 1.c 给出年月日,计算该日是该年第几天? */ /**********************************************************/ #include<stdio.h> void main() { int sum_day(int,int); int leap(int year); int year,month,day,days; printf("\n"); printf("请输入所求日期(年(4位),月(2位),日(2位)):"); scanf("%d,%d,%d",&year,&month,&day); printf("%d,%d,%d",year,month,day); days=sum_day(month,day); if(leap(year)&& month>=3) days=days+1; printf("是本年第%d天。\n",days); } int sum_day(int month,int day) { int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i; for(i=1;i<=month-1;i++) day+=day_tab[i]; return(day); } int leap(int year) { int leap; leap=year%4==0 && year%100!=0||year%400==0; return(leap); }
【例1.3】给出年月日,计算该日是该年第几天。
解:打开“给出年月日,计算该日是该年第几天”文件夹,双击扩展名为DSW的文件,进入Visual C++ 6.0编译环境,编译程序并执行之,根据屏幕提示,输入年月日,运行结果如下:
由运行结果可见,2016年5月18日是2016年的第139天。