1269: 第几天
题目描述
给定一个日期,输出这个日期是该年的第几天。
输入
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出
对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入
1985/1/20
2006/3/12
样例输出
20
71
提示
来源
分析:
水题,简单的运算问题。
LANGUAGE:C++
CODE:
#include <iostream>
using namespace std;
bool judge(int n)
{
if(n%4==0||(n%100!=0&&n%400==0))
return true;
return false;
}
int solve(int n)
{
int s=0;
switch(n)
{
case 12: s+=30;
case 11: s+=31;
case 10: s+=30;
case 9: s+=31;
case 8: s+=31;
case 7: s+=30;
case 6: s+=31;
case 5: s+=30;
case 4: s+=31;
case 3: s+=29;
case 2: s+=31;
}
return s;
}
int main()
{
int a,b,c;
while(scanf("%d/%d/%d",&a,&b,&c)!=EOF)
{
if(judge(a))
cout<<solve(b)+c<<endl;
else if(b>2)
cout<<solve(b)+c-1<<endl;
else
cout<<solve(b)+c<<endl;
}
}
用数组+for循环可以简化程序。
CODE:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a,b,c;
while(scanf("%d/%d/%d",&a,&b,&c)!=EOF)
{
if((a%4==0) ||(a%400==0&&a%100!=0))
n[2]=29;
int tian=0;
for(int i=1;i<b;i++) tian=tian+n[i];
tian=tian+c;
cout<<tian<<endl;
}
return 0;
}