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 }

猜你喜欢

转载自www.cnblogs.com/tangyimin/p/10547806.html