# 第幾天?
阿新 • • 發佈:2018-11-04
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) )