題目描述:
輸入年、月烁登、日怯屉,計算該天是本年的第幾天。
輸入:
包括三個整數(shù)年(1<=Y<=3000)饵沧、月(1<=M<=12)锨络、日(1<=D<=31)。
輸出:
輸入可能有多組測試數(shù)據(jù)狼牺,對于每一組測試數(shù)據(jù)羡儿,
輸出一個整數(shù),代表Input中的年是钥、月掠归、日對應本年的第幾天。
樣例輸入:
1990 9 20
2000 5 1
樣例輸入:
263
122
編程思路:
計算輸入的日期是今年的第幾天的思路很簡單咏瑟,代碼的主要核心就在于判斷該年是否為閏年拂到,首先閏年的定義是:1.年份是4的倍數(shù),且不是100的倍數(shù)(例如2004年是閏年)码泞;2.年份是400的倍數(shù)(例如1900年不是閏年)兄旬。我們只需要運用邏輯運算分別對這兩種情況進行討論即可。然后主函數(shù)的思路是余寥,首先判斷月數(shù)是否為一月或者二月领铐,如果是就不用判斷閏年,直接計算該月以前的天數(shù)總和宋舷,再加上該月的號數(shù)就可以得到結(jié)果绪撵;否者就需要抉擇是否為閏年,閏年多加一天祝蝠,后面過程和前面一樣音诈。
程序?qū)崿F(xiàn):
#include <iostream>
#include<string>
using namespace std;
bool fun(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)//判斷是否為閏年
return true;
else return false;
}
int main()
{
int data[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };//記錄平年每月的天數(shù)
while (1) {//輸入多組數(shù)據(jù)
int year, month, day;
int answer=0;
cin >> year >> month >> day;//輸入年月日
if (month <= 2) { //二月以前不用考慮閏年
for (int i = 0; i < month - 1; i++){//把該月以前的天數(shù)加上
answer+=data[i];
}
}
else {
for (int i = 0; i < month - 1; i++) {
answer += data[i];
}
if (fun(year))//如果是閏年多加一天
answer++;
}
cout << answer + day << endl;//結(jié)果加上當月的天數(shù)幻碱,輸出這是這一年的第幾天
}
return 0;
}