题目描述:
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
2006/3/12
Sample Output
20
71
解题思路:
这是一道练习基本操作的题目,没有难度,前提是要知道闰年的定义:
闰年是公历中的名词。闰年分为普通闰年和世纪闰年。
普通闰年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年,1999年不是闰年);
世纪闰年:能被400整除的为世纪闰年。(如2000年是世纪闰年,1900年不是世纪闰年);
另外一点,该题目考察了几个运算符号的优先级,这些基础知识要掌握扎实。我就是刚开始记错了!和%的优先级,导致判断语句写错了,提交若干次都是WA,百度后才恍然大悟,要是在重要的上机考试中遇到这类问题,岂不是凉凉?贴一张运算符优先级的次序表,多看两眼也就记住了,另外可以疯狂地用括号约束来保证符号的优先级。
实现(C++):
#include <iostream>
using namespace std;
int month_days[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(){
int year, month, day;
char a, b; //a,b分别代表两个“/”
while(cin>>year>>a>>month>>b>>day){
if((!(year%4)&&(year%100))||!(year%400))
month_days[1]=29;
else
month_days[1]=28;
int total_days=0;
for(int i=0; i<month-1; i++)
total_days+=month_days[i];
total_days+=day;
cout<<total_days<<endl;
}
return 1;
}