天天看點

CCF認證 - 201509-2 - 日期計算 C語言代碼實作(100分)

#include<stdio.h>
int main()
{
	int y, d, flag = 0;//flag為1表示閏年; 
	scanf("%d%d", &y, &d);
	int month_day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, day[12] = {0};
	for(int i = 1; i <= 12; i++)
		for(int j = 1; j <= i; j++)
			day[i - 1] += month_day[j - 1];
/*	for(int i = 0; i < 12; i++)
		printf("%d ", day[i]);
	printf("\n");
*/
	if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
		flag = 1;
	if(flag == 1)
		for(int i = 1; i < 12; i++)
			day[i]++;
/*	for(int i = 0; i < 12; i++)
		printf("%d ", day[i]);
*/
	for(int i = 1; i < 12; i++)
		if(d <= day[i - 1])
		{
			printf("%d\n%d", i, d);
			return 0;
		}
		else if(d > day[i - 1] && d <= day[i])
		{
			printf("%d\n%d", i + 1, d - day[i - 1]);
			return 0;
		}
	return 0;		
}