天勤OJ 题目1406: 计算天数

题目描述

输入年月日,计算该填是本年的第几天。例如1990 20 日是1990 年的第263 天,

2000 日是2000 年第122 天。(闰年:能被400 正除,或能被整除但不能被100

整除。每年1357810 为大月)

 

输入

输入第一行为样例数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;  
}



你可能感兴趣的:(北理)