题目描述
输入年月日,计算该填是本年的第几天。例如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
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
/*********************************
* 日期: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;
}