NBUT 1007 第幾天 C來寫,代碼思路清晰

有一本記錄了從1年到9999年的日曆,

假設1年1月1日爲第一天,現在問第Y年的第M月的第D天是第幾天。

Input
有一本記錄了從1年到9999年的日曆,
假設1年1月1日爲第一天,現在問第Y年的第M月的第D天是 第幾天。
Output
對於每組數據,輸出這是第幾天。
Sample Input
2
1 1 1
2 2 2
Sample Output
1
398
原題鏈接:https://ac.2333.moe/Problem/view.xhtml?id=1007
這個題沒有什麼難度,但是卻要考慮細緻,邏輯清晰
先上代碼,看清註釋!!
#include <stdio.h>
int year, month, day;
//判斷閏年,是閏年返回1,不是則返回0
int getrunnian(int y)
{
	if((y%4==0 && y%100!=0)	|| y%400==0)  
		return 1;
	else
		return 0;
}
int main()
{
	int n, sum, i, j;
	int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};  //把每個月份的天數存好,方便後面使用,因m下標從0開始,則第一個數存0
	scanf("%d",&n);
	for(i=0;i<n; i++)
	{
		scanf("%d%d%d",&year, &month, &day);
		sum=0;  //這條語句不可少,這題是多個實例,每個實例結束後sum制零,表示每個實例互不干擾。
		for(j=1; j<year; j++)
		{
			if(getrunnian(j)==0)  //不是閏年爲365天,否則爲366天
				sum+=365;
			else
				sum+=366;
		}
		for(j=1; j<month; j++)
		{
			if(j==2)
			{
				if(getrunnian(year)==1)  //是閏年二月份爲29天,否則爲28天
					sum+=29;
				else
					sum+=m[2];
			}
			else
			  sum+=m[j];
		}
		sum+=day;
		printf("%d\n", sum);
	}
	
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章