题解 | #今年的第几天?#
今年的第几天?
http://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d
关键点
- 判断是否是闰年: 400的倍数, 不是100但是是4的倍数
- 存储每个月有所少天, 二维数组->闰年
- 小心: 不要把本月的总天数也算上了
代码如下
#include <iostream>
#include <cstdio>
#include <math.h>
#include <string>
using namespace std;
//判断是否是闰年: 400的倍数, 不是100但是是4的倍数
bool run(int year){
if((year % 100 != 0 && year %4 == 0) || year % 400 ==0){
return true;
}
return false;
}
//存储每个月有所少天, 二维数组->闰年
int daynum [2][12] = {{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
int main(){
int year, month, day;
while(scanf("%d%d%d", &year, &month, &day)!=EOF){
int isrun = 0;
if(run(year)){
isrun = 1;
}
int sum = 0;
//! 小心: 不要把本月的总天数也算上了
for(int i=0; i<month-1; i++){
sum+=daynum[isrun][i];
}
sum+=day;
cout<<sum<<endl;
}
}