题解 | 今年的第几天?
今年的第几天?
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; }