第几天?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 61733 Accepted Submission(s): 23197
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
Author
lcy
Source
解:
#include int main() { int y,m,d,sum; while(~scanf("%d/%d/%d",&y,&m,&d)) { sum=0; switch(m) { case 12:sum+=30; case 11:sum+=31; case 10:sum+=30; case 9:sum+=31; case 8:sum+=31; case 7:sum+=30; case 6:sum+=31; case 5:sum+=30; case 4:sum+=31; case 3:if((y%4==0)&&((y%100)!=0)||(y%400==0)) sum+=29; else sum+=28; case 2:sum+=31; case 1:sum+=d; } printf("%dn",sum); sum=0; } return 0; }
首先是关于润年的判断,简单打草后可以推出是在三月的时候进行。一开始还打算用if语句嵌套,写了三层之后发现还是比较麻烦的,改用switch语句。要注意switch语句是是从表达式值于case的常量表达式值i相等时,从该case进入的,然后依次执行后面的语句。也就是说,关于这道题目的case应该倒着写,从case12到case1,这样才能保证依次执行。
题目不难,主要考察的switch语句的运用,水水的一次过~
授权协议:创作共用 署名-非商业性使用 2.5 中国大陆
除注明外,本站文章均为原创;转载时请保留上述链接。