DreamJudge-1051-日期計算

DawnTraveler發表於2024-06-11

1.題目介紹

Time Limit: 1000 ms
Memory Limit: 256 mb
定義一個結構體變數(包括年、月、日),程式設計序,要求輸入年月日,計算並輸出該日
在本年中第幾天。

輸入輸出格式

輸入描述:

輸入三個整數(並且三個整數是合理的,既比如當輸入月份的時候應該在1 至12 之間,
不應該超過這個範圍)否則輸出Input error!
多組測試資料輸入

輸出描述:

輸出一個整數.既輸入的日期是本年的第幾天。

輸入輸出樣例

輸入樣例#:

1985 1 20
2006 3 12

輸出樣例#:

20
71

題目來源
中南大學機試題

2.題解

2.1 日期計算

思路

注意下合法性檢查即可

程式碼

#include<bits/stdc++.h>
using namespace std;
vector<int> f{0,31,28,31,30,31,30,31,31,30,31,30,31};
bool isLeapYear(int year){
	if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) return true;
	return false;
}
bool isVaildDate(int month, int day){
	if(month > 12 || month < 1) return false;
	if(day < 1 || day > f[month]) return false;
	return true;
} 
int main(){
	int year, month, day, date;
	while(cin >> year >> month >> day){
		if(!isVaildDate(month, day)){
			printf("Input error!\n");
			continue;
		}
		date = 0;
		f[2] == isLeapYear(year)?29:28;
		for(int i = 1; i < month; i++){
			date += f[i];
		}
		date += day;
		printf("%d\n", date);
	}
	return 0;
} 

相關文章