九度OJ 1070:今年的第几天? (日期计算)
- 题目描述:
-
输入年、月、日,计算该天是本年的第几天。
- 输入:
-
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
- 输出:
-
输入可能有多组测试数据,对于每一组测试数据,输出一个整数,代表Input中的年、月、日对应本年的第几天。
- 样例输入:
-
1990 9 20 2000 5 1
- 样例输出:
-
263 122
思路:
主要是注意闰年的情况,其他没难度。
代码:
#include <stdio.h> int main(void) { int y, m, d; int a; while (scanf("%d%d%d", &y, &m, &d) != EOF) { a = 0; if (m > 1) a += 31; if (m > 2) { if (y%4 == 0 && y%100 != 0 || y%400 == 0) a += 29; else a += 28; } if (m > 3) a += 31; if (m > 4) a += 30; if (m > 5) a += 31; if (m > 6) a += 30; if (m > 7) a += 31; if (m > 8) a += 31; if (m > 9) a += 30; if (m > 10) a += 31; if (m > 11) a += 30; if (m > 12) a += 31; a += d; printf("%d\n", a); } return 0; } /************************************************************** Problem: 1070 User: liangrx06 Language: C Result: Accepted Time:10 ms Memory:912 kb ****************************************************************/
编程算法爱好者。