题目描述
输入年月日,计算该填是本年的第几天。例如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; }