# 第几天?

Problem Description

给定一个日期,输出这个日期是该年的第几天。

Input

输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

Output

对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input

1985/1/20
2006/3/12

Sample Output

20
71

这题看似很简单,且有多种解法,但是也有些坑(可能是我个人学艺不精的原因吧~)

下面是参考代码

#include <iostream>
using namespace std;
int main()
{
    int a[100],x,y,z,i,m;
    char e,f;
    a[1]=31,a[2]=28,a[3]=31,a[4]=30,a[5]=31,a[6]=30,a[7]=31,a[8]=31,a[9]=30,a[10]=31,a[11]=30,a[12]=31;
    while(cin>>x>>e>>y>>f>>z)
	 {
		   m=0;
		   a[2]=28;            //此处不可省略,因为while多重循环,必须将a[2]重置为28
		   if(x%4==0 && (x%100!=0 || x%400==0) )
		   a[2]=29;
		   for(i=1;i<y;i++)
		   m=m+a[i];
		   cout<<m+z<<endl;
	 }
} 

注意:
1.输入YYYY/MM/DD 可以令"/"为个字符串。
如: char e,f; 这样通过下面的代码就过滤掉了 e,f 两个’/'字符

..........
      while(cin>>x>>e>>y>>f>>z)
..........

2.while(cin >> x >> y >> z)
这种输入方式也可以处理多数据
同:

  1. while( scanf("%d%d%d", &x, &y, &z) )

  2. while( scanf("%d%d%d", &x, &y, &z) != EOF )

  3. while( ~scanf("%d%d%d", &x, &y, &z) )

猜你喜欢

转载自blog.csdn.net/weixin_43469047/article/details/83381813
今日推荐