题解 | 今年的第几天?

今年的第几天?

https://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;

//包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

//输入可能有多组测试数据,
//对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。

int NextDay(int& year, int& month, int& day) {
    int arr[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    if (year % 400 == 0 || year % 4 == 0 &&
            year % 100 != 0) { //世纪闰年、普通闰年
        arr[2] = 29;
    } else {
        arr[2] = 28;
    }
    day++;
    if (day > arr[month]) {
        month++;
        day = 1;
        if (month > 12) {
            year++;
            month = 1;
        }
    }
    return 1;
}



int main() {
    int year, month, day;
    while (scanf("%d%d%d", &year, &month, &day) != EOF) {
        int nowmonth = 1;
        int nowday = 1;
        int sum = 1 ;
        while (nowmonth != month || nowday != day) {
            NextDay(year, nowmonth, nowday);
            sum++;
        }
        printf("%d\n", sum);
    }
    return 0;
}

全部评论

相关推荐

zcbn:你人真好,还给他一天一块一个月全勤就30块大洋了啊
点赞 评论 收藏
分享
03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务