/*
7-19 计算天数 (15 分)
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
*/
#include <stdio.h>
#include <time.h>
int y, m, d;// 读入的数据
int yday;
static inline int day_of(int mon){
switch(mon){
case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31;
case 4:case 6:case 9:case 11: return 30;
default: return 28;
}
}
static inline int leap_year(int y){
return (y%400 == 0 )|| (y%100 != 0 && y%4==0);
}
int ans3(){
// 1. 当成平年,计算天数
yday = 0;
for (int i = 0; i<m-1;i++) yday += day_of(i);
yday+=d;
// 2. 闰年,补上一天
if (m>2 && leap_year(y))yday+=1;
return 0;
}
int main(void){
scanf("%d/%d/%d", &y, &m, &d);
ans3();
printf("%d\n", yday);
}
结果是部分错误,使劲检查,发现
for (int i = 0; i<m-1;i++) yday += day_of(i);
应当修改为:
for (int i = 1; i<m;i++) yday += day_of(i);
都是粗心惹的祸。
版权声明:本文为chenxizhan1995原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。