1015: 第几天(2016年中南大学研究生复试机试题 )
1015: 第几天
时间限制: 1 Sec 内存限制: 128 MB提交: 270 解决: 99
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
							给定一个日期, 输出这个日期是该年的第几天。						
					输入
							数据格式为 YYYY/MM/DD组成, 具体参见输入示例。另外,所有输入数据是合法的。						
					输出
							对于每组输入数据,输出一行,表示该日期是该年的第几天。						
					样例输入
1985/01/20
2006/03/12
样例输出
20
71
来源/分类
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 /*公历闰年的简单计算方法:(符合以下条件之一的年份即为闰年)
 5 1.能被4整除而不能被100整除.(如2004年就是闰年,1900年不是)
 6 2.能被400整除.(如2000年是闰年)*/
 7 bool defIsRun(int a){
 8     if((a%4==0&&a%100!=0)||a%400==0){
 9         return true;
10     }
11     return false;
12 }
13 int main(){
14     int a,b,c;
15     /*大月有:1月、3月、5月、7月、8月、10月、12月,大月每月31天,31×7=217(天)
16     小月有:4月、6月、9月、11月,小月每月30天,30×120(天)
17     特殊月:2月,平年2月有28天,闰年2月有29天。*/
18     int data[12]={31,28,31,30,31,30,31,31,30,31,30,31};
19     int dataRun[12]={31,29,31,30,31,30,31,31,30,31,30,31};
20     while(scanf("%d/%d/%d",&a,&b,&c)!=EOF){
21         int result=0;
22         //首先判断是否是润年
23         if(defIsRun(a)){
24             for(int i=0;i<b-1;i++){
25                 result+=dataRun[i];
26             }
27             result+=c;
28         } 
29         else{
30             for(int i=0;i<b-1;i++){
31                 result+=data[i];
32             }
33             result+=c;
34         }
35          
36          cout<<result<<endl;
37     }
38     return 0;
39 }
                    
                
                
            
        
浙公网安备 33010602011771号