0
点赞
收藏
分享

微信扫一扫

天数(时间的遍历)

爱喝酒的幸福人 2022-01-08 阅读 113
c语言

题目描述

小艳昨晚梦见了一位老人,老人告诉她在她第20个生日时她的白马王子将会出现,她很想知道还要过几天她的白马王子才会出现,但是她总是算不清楚,所以今天一大早就找到了你——传说中的电脑高手,想请你帮她写个程序,告诉她答案。

输入

共两行:
第一行3个数,Y0,M0,D0数与数之间用空格隔开,分别为小艳的出生年月日(即第一个生日)
第二行3个数,Y,M,D数与数之间用空格隔开,分别为今天的年月日

输出

仅包含一行,即需要经过的天数

样例输入

1999 4 5
2009 12 12

样例输出

3036

提示

100%的数据,1≤Y0,Y≤3000,保证输入的日期合法,保证答案为正。第20个生日即2018年4月5日。

代码:

#include <stdio.h>
int GetF(int year);
int main ()
{
    int y1,m1,d1;
    int y2,m2,d2;
    scanf("%d%d%d",&y1,&m1,&d1);
    scanf("%d%d%d",&y2,&m2,&d2);
    y1+=19;
   // int ys,ye;
  //  int ds,ed;
    int ms=m2;
    int me=12;
    int ds=d2;
    int de;
    int cnt=0;
    for(int i=y2; i<=y1; i++)
    {
        if(i==y1)me=m1;
        for(int o=ms; o<=me; o++)
        {
            ms=1;
            if(o==2)de=GetF(i);
            else
            {
                if(o<=7)
                {
                    if(o%2==0) de=30;
                    else de=31;
                }
                else
                {
                    if(o%2==0)de=31;
                    else de=30;
                }
            }
            if(i==y1&&o==m1)de=d1;
            for(int m=ds; m<=de; m++)
            {
                ds=1;
                cnt++;
            }
        }
    }
    printf("%d\n",cnt-1);
}
int GetF(int year)
{
    if((year%4==0&&year%100!=0)||year%400==0)
        return 29;
    else return 28;
}
 

举报

相关推荐

0 条评论