【日期】再算天数
我们再来计算天数(两个日期之间相差几天)。
本次编程与过去的程序不一样,我们已经给出了一些子函数,请你将这些函数用起来,然后编写主函数来完成所需要的功能。
输入:
起始日期的年,月,日
终止日期的年,月,日 (假设终止日期大于起始日期)
输出:
终止日期与起始日期之间的天数
PS:
注意:不用提交完整程序,只需要提交你自己编写的主函数即可。
样例:
序号 | 测试输入 | 期待的输出 | 额外进程 |
---|---|---|---|
1 | 2 3↵ 5↵ 4↵ 7↵ 8↵ 4↵ | a↵ | 0 |
2 | Z↵ | z↵ | 0 |
3 | b↵ | B↵ | 0 |
4 | y↵ | Y↵ | 0 |
5 | #↵ | #↵ | 0 |
预设代码
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
#include <stdio.h>
// 声明函数原型
int leap_year( int );
int year_days( int );
int days(int,int,int);
int leap_year( int year ) // 判断闰年或平年
{ return ( (year%4==0 && year%100!=0) || year%400==0 ) ? 1 : 0;
}
int year_days(int year) // 计算一整年的天数
{ return leap_year( year ) ? 366 : 365;
}
int days( int year, int month, int day ) // 计算该天month,day 是本年year的第几天
{ int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}, i;
if ( leap_year( year ) && month >2 )
day++;
for ( i=1; i<month; i++ )
day += months[i];
return day;
}
/***********************************
int main()
{
This function is waiting for you.
return 0;
}
***********************************/
/* PRESET CODE END - NEVER TOUCH CODE ABOVE */
思路
思路可以说和【日期】根据日期求星期完全一致,只不过要用预设好的代码而已
代码
int main(){
int y1,y2,m1,m2,d1,d2,c,y;
scanf("%d%d%d%d%d%d",&y1,&m1,&d1,&y2,&m2,&d2);
for(y=y1;y<y2;y++)
c+=year_days(y);
c = c - days( y1, m1, d1 ) + days( y2, m2, d2 );
printf("%d days\n",c);
return 0;
}