1. 程式人生 > >CCF CSP認證考試歷年真題 日期計算 C語言實現

CCF CSP認證考試歷年真題 日期計算 C語言實現

試題編號:201509-2
試題名稱:日期計算 時間限制:1.0s 記憶體限制:256.0MB

問題描述:
給定一個年份y和一個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年:1)年份是4的整數倍,而且不是100的整數倍;2)年份是
400的整數倍。

輸入格式
輸入的第一行包含一個整數y,表示年份,年份在1900到2015之間(包含1900和2015)。
輸入的第二行包含一個整數d,d在1至365之間。

輸出格式

輸出兩行,每行一個整數,分別表示答案的月份和日期。

樣例輸入

2015

80
樣例輸出
3
21
樣例輸入
2000
40
樣例輸出
2
9

分析:

很簡單的一道題,算是再記一下每月份的天數吧。

程式碼在此:

#include<stdio.h>

#define MONTHS_NUM 12 // 十二個月 

int judge_year(int year)
{
	if( (year%4 == 0 && year%100 != 0 ) || year%400 == 0)
	{
		return true;
	}
	else 
	{ 
		return false;
	}
}

int main()
{
	int y, d;
	
	scanf("%d %d", &y, &d);
		
	int months[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		
	if(judge_year(y) == false)
	{
		months[2] = 28;
	} 

	int i;
	for(i = 1; i <= MONTHS_NUM; i ++)
	{
		if(d > months[i])
			d -= months[i];
		else
			break;
	}
	
	printf("%d\n%d", i, d);
	
	return 0;
}