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 }