1579 - 计算天数
时间限制 : 1 秒
内存限制 : 32 MB
输入年月日,计算该填是本年的第几天。例如1990 年9 月20 日是1990 年的第263 天,
2000 年5 月1 日是2000 年第122 天。(闰年:能被400 正除,或能被4 整除但不能被100
整除。每年1、3、5、7、8、10 为大月)
题目输入
输入第一行为样例数m,接下来m行每行3个整数分别表示年月日。
题目输出
输出m行分别表示题目所求。
输入/输出样例
输入格式
2 1990 9 20 2000 5 1
输出格式
263 122
C语言解答
#include <stdio.h> int main(){ int mm; int y,m,d; int sum; int tmp; int num[12] = {0,31,28,31,30,31,30,31,31,30,31,30}; scanf("%d",&mm); while (mm--) { scanf("%d%d%d",&y,&m,&d); sum = d; if (y%400==0||(y%4==0&&y%100!=0)) { num[2] = 29; } else { num[2] = 28; } for (int i = 1;i<m;i++) { sum = sum + num[i]; } printf("%d\n",sum); } }
C++解答
#include <iostream> #include <cstdio> using namespace std; int month[13]= {0,31,0,31,30,31,30,31,31,30,31,30,31}; int check(int y) { if (y % 100 == 0) return y % 400 == 0; else return y % 4 == 0; } int main() { //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int y, m, d, t; cin >> t; while (t--) { int sum = 0; cin >> y >> m >> d; month[2] = check(y) + 28; for(int i = 1; i < m; i++) sum = sum + month[i]; sum = sum + d; cout << sum << endl; } return 0; }
Java解答
import java.io.*; import java.util.*; public class Main { public static void main(String g[])throws Exception { int t,y,m,d,sum; Scanner cin= new Scanner(System.in); t=cin.nextInt(); for(int i=0;i<t;i++) { sum=0; y=cin.nextInt(); m=cin.nextInt(); d=cin.nextInt(); for(int j=1;j<m;j++) switch(j) { case 1: sum+=31; break; case 2: if((y%4==0&&y%100!=0)||y%400==0) sum+=29; else sum+=28; break; case 3: sum+=31; break; case 4: sum+=30; break; case 5: sum+=31; break; case 6: sum+=30; break; case 7: sum+=31; break; case 8: sum+=31; break; case 9: sum+=30; break; case 10: sum+=31; break; case 11: sum+=30; break; case 12: sum+=31; break; } System.out.println(sum+d); } } }