问题链接:https://vjudge.net/contest/274223#problem/J
问题简述:给定一个日期,输出这个日期是该年的第几天。
问题分析:使用while循环输入年月日和“/”,使用switch结构算出比月份少一个月的总天数,再把总天数加上当前这个月的号数,再判断这一年是不是属于闰年,如果是闰年,并且月份大于1,则总天数再加1。
代码
#include <iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
int year,month,day;
int sum,i;
char s;
while(cin>>year>>s>>month>>s>>day)
{
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:continue;
}
sum+=day;
if((year%400==0)||(year%4==0&&year%100!=0))
{
i=1;
}
else i=0;
if(i==1&&month>2)
sum++;
cout<<sum<<endl;
}
}