# 第几天?

xiaoxiao2025-08-21  61

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) 这种输入方式也可以处理多数据 同:

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

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

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

转载请注明原文地址: https://www.6miu.com/read-5035092.html

最新回复(0)