Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
问题分析:
年月日一起输入,最先考虑使用字符串直接全部输入,然后考虑到年月日的字符个数均不确定,所以还是选择分开输入,但是年月日中间使用了/分隔符,所以使用scanf输入最合适。
题目主要是判断闰年,然后可以使用一个二维数组来分别保存两种情况下每个月的天数,使用循环累加即可
参考代码:
#include <iostream> using namespace std; int lev(int n) { if(n % 4 == 0 && (n % 100 != 0 || n % 400 == 0)) return 0; else return 1; } int main(int argc, char** argv) { int y,m,d; int month[2][13]={ {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; while(scanf("%d/%d/%d",&y,&m,&d) != EOF) { int s=0; int i; for(i=1;i<m;i++){ s+=month[lev(y)][i]; } s+=d; cout<<s<<endl; } return 0; }