输入年月日,计算该填是本年的第几天。例如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
*** 提示已隐藏,点击上方 [+] 可显示 ***
北京理工大学计算机专业2003年研究生复试上机试题
/********************************* * 日期:2013-2-15 * 作者:SJF0115 * 题号: 天勤OJ 题目1406: 计算天数 * 来源:http://acmclub.com/problem.php?id=1406 * 结果:AC * 来源:北京理工大学计算机专业2002年研究生复试上机试题 * 总结: **********************************/ #include <stdio.h> #include <string.h> int dayOfMonth[13][2] = { 0,0, 31,31, 59,60, 90,91, 120,121, 151,152, 181,182, 212,213, 243,244, 273,274, 304,305, 334,335, 365,366, }; //判断闰年 int leap_year(int year){ if((year%100 != 0 && year%4 == 0) || (year % 400 == 0)){ return 1; } else{ return 0; } } int main() { int day,year,month,n,i; scanf("%d",&n); //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); for(i = 0;i < n;i++) { //输入年月日 scanf("%d %d %d",&year,&month,&day); //计算该填是本年的第几天。 printf("%d\n",dayOfMonth[month-1][leap_year(year)] + day); } return 0; }
/********************************* * 日期:2013-2-15 * 作者:SJF0115 * 题号: 天勤OJ 题目1406: 计算天数 * 来源:http://acmclub.com/problem.php?id=1406 * 结果:AC * 来源:北京理工大学计算机专业2002年研究生复试上机试题 * 总结: **********************************/ #include <stdio.h> #include <string.h> #include <iostream> using namespace std; //闰年 int Month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //判断闰年 int leap_year(int year){ if((year%100 != 0 && year%4 == 0) || (year % 400 == 0)){ return 1; } else{ return 0; } } int main() { int day,year,month,n,i,j,sum; scanf("%d",&n); //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); for(i = 0;i < n;i++) { sum = 0; //输入年月日 scanf("%d %d %d",&year,&month,&day); //非闰年 if(leap_year(year) == 0){ Month[2] = 28; } else{ Month[2] = 29; } //计算该填是本年的第几天。 for(j = 1;j < month;j++){ sum += Month[j]; } printf("%d\n",sum + day); } return 0; }