第九届蓝桥杯C++B组:第几天

版权声明:转载留名即可 ^_^ https://blog.csdn.net/qq_33375598/article/details/88605107

2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?

注意:需要提交的是一个整数,不要填写任何多余内容。

答案:125

参考代码:

#include<cstdio>
#include <algorithm>
using namespace std;

int month[13][2] ={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},
                   {31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
bool isleap(int year){
    return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}

int main(){
    int y1, m1, d1;
    int y2, m2, d2;
    int time1, time2;
    scanf("%d%d", &time1, &time2);
    if(time1 > time2)
        swap(time1, time2);

    y1 = time1 / 10000, m1 = time1 % 10000 / 100, d1 = time1 % 100;
    y1 = time2 / 10000, m2 = time2 % 10000 / 100, d2 = time2 % 100;

    int ans = 1;
    while(y1 < y2 || m1 < m2 || d1 < d2){
        d1++;
        if(d1 == month[m1][isleap(y1)] + 1){
            d1 = 1;
            m1++;
        }
        if(m1 == 13){
            m1 = 1;
            y1++;
        }
        ans++;
    }
    printf("%d\n", ans);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_33375598/article/details/88605107