NYOJ_75 日期计算 (推断这一天是这一年中的第几天)
如题,输入一个日期,格式如:2010 10 24 ,推断这一天是这一年中的第几天。
分析:
官方给的最优答案用了for 和switch语句结合,十分巧妙。
代码
/* 如题,输入一个日期。格式如:2010 10 24 推断这一天是这一年中的第几天。*/ #include<iostream> using namespace std; bool leapyear(int a) //推断闰年 { // if((a%4==0) && (a%100 || a%400==0) ) return true; //能够被4整除可是不能被100 或者能够被400整除的为闰年 if( (a%4==0 && a%100 )|| a%400 == 0 ) return true; else return false; } int main() { int a[3]={0}; int n; cin>>n; int day[12]={31,0,31,30,31,30,31,31,30,31,30,31}; //默认闰年 while(n--) { int dayNum = 0; for(int i=0;i<3;i++) { cin>>a[i]; } if(leapyear(a[0])) day[1]=29; //推断闰年来改变2月的天数 else day[1]=28; for(int i=0; i+1 <a[1];i++) { dayNum += day[i]; } cout<<dayNum+a[2]<<endl; } }