解题思路:或许会比较简单粗暴。直接先分别计算两个日期从取值范围中最小的日期到这一天的天数,再进行做差,便得出结果。(本人为大一新生,初学者,可能在尝试编写题解时,出现不足和错误,希望得到您的谅解,谢谢。)

注意事项:原本觉得计算量可能比较大,后尝试发现可行,希望和同学们分享一下。以下为我曾犯过的错误:1.闰年的判断逻辑错误。闰年是能被 4 整除,但不能被 100 整除的年份,或者能被 400 整除的年份;  2.注意for循环语句中,继续循环的条件是否需要-1; 3.调用函数时应对数据定义类型。
参考代码:

#include<stdio.h>

int fun(int year,int month,int day)

{

    int c[12]={31,28,31,30,31,30,31,31,30,31,30,31};

    int i;

    long long int sum;

    sum=0;

    for(i=1;i<year;i++)

    {

        if((i%4==0&&i%100!=0)||(i%400==0))

        sum+=366;

        else sum+=365;

    }//先算该年之前的总天数

    if((year%4==0&&year%100!=0)||(year%400==0))

    c[1]=29;

    for(i=0;i<month-1;i++)

    sum+=c[i];//再算该年此月之前的总天数

    sum+=day;//最后再加上日数即可

    return sum;

    }


int main()

{

    int startYear,startMonth,startDay,endYear,endMonth,endDay;

    scanf("%d %d %d\n%d %d %d",&startYear,&startMonth,&startDay,&endYear,&endMonth,&endDay);

    long long int differ,d1,d2;

    d1=fun(startYear,startMonth,startDay);

    d2=fun(endYear,endMonth,endDay);//分别计算从1年1月1日到这一天的总天数

    differ=d2-d1;

    printf("%lld",differ);

    return 0;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论