第几天
内存限制:128Mb
时间限制:1000s
题目描述
给定一个日期,输出这个日期是该年的第几天。
输入格式
输入数据有多组,每组占一行,数据格式为 YYYY/MM/DD
组成,具体参见 sample input
,另外,可以向你确保所有的输入数据是合法的。
输出格式
对于每组输入数据,输出一行,表示该日期是该年的第几天。
下面是代码:
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
bool isleapy(int y)
{
return(y%4==0&&y%100!=0)||(y%400==0);//闰年的判定
}
int day(int y,int m,int d)
{
int nummon[]={31,0,31,30,31,30,31,31,30,31,31,30,31};
nummon[1]=isleapy(y)?29:28;
int ans=0;
for(int i=0;i<m-1;i++){
ans+=nummon[i];
}
ans+=d;
return ans;
}
int main()
{
string s;
while(getline(cin,s))
{
istringstream ss(s);
int y,m,d;
char discard;//用来存储输入流上临时读取但不需要的字符
ss>>y>>discard>>m>>discard>>d;//丢弃不需要的字符
cout<<day(y,m,d)<<endl;
}
return 0;
}
关于<sstream>的应用见第一篇文章!
欢迎大家补充与批评!