/*题目:请实现输入两个日期,计算两个日期之间的天数,默认第一次输入的日期早于第二次输入的日期。
例如:
请输入第一次的日期:2008.7.4
请输入第二次的日期:2008.8.5
两个日期之间间隔的天数为31天。(31,32,33具体规则可以自己定义)
注意:可能你需要考虑不同月份有不同天数,可能你需要考虑到闰年。*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct MyStruct
{
int year;
int month;
int day;
};
int main(int *argc, char *argv[])
{
//先判断年份,闰年2月有29天,平年2月有28天,而且必须明确规定输入的年份是同一年。
MyStruct s1,s2;
int flag = 0;//闰年是1,平年是0。
printf("请输入第一次的日期:\n");
scanf_s("%d.%d.%d", &s1.year, &s1.month, &s1.day);
printf("请输入第二次的日期:\n");
scanf_s("%d.%d.%d", &s2.year, &s2.month, &s2.day);
//先判断年份,闰年2月有29天,平年2月有28天
if (s1.year % 4 == 0 && s1.year % 100 != 0 || s1.year % 400 == 0)
{
flag = 1;//闰年
}
if (flag == 1)
{
if (s1.month == 2) {
s2.day = s2.day - 2;
}
}
if (flag == 0)
{
if (s1.month == 2) {
s2.day = s2.day - 1;
}
}
//简单判断一下
//printf("两个日期之间相差的天数是:%d\n", 30 * (s2.month - s1.month) + s2.day - s1.day);
printf("两个日期之间相差的天数是:%d", 365*(s2.year-s1.year)+ 30 * (s2.month - s1.month) + s2.day - s1.day);
return 0;
}