1. 程式人生 > >判斷某一年是閏年還是平年

判斷某一年是閏年還是平年

一、首先我們應該知道怎樣判斷一年是否為閏年

條件:能被4整除且不能被100整除或者能被400整除的年份為閏年

二、程式碼

int main()
{
	int year, leap;					//定義兩個整型變數year與leap
	printf("請輸入年份:");
	scanf_s("%d", &year);			//輸入一個年份
	if (year % 4 == 0)				//如果這個年份能被4整除
	{
		if (year % 100 == 0)		//如果這個年份能被100整除
		{
			if (year % 400 == 0)	//如果這個年份能被400整除
				leap = 1;
			else
				leap = 0;			//這個數不能被400整除則將leap置為0
		}
		else
			leap = 1;				//這個數不能被100整除則將leap置為1
	}
	else
		leap = 0;					//這個數不能被這三個數中的任何一個數整除
	if (leap)
		printf("%d is a leap year\n", year);
	else 
		printf("%d is not a leap year\n", year);
	return 0;
}

三、過程中沒有注意到的問題

1、由於我用的vs2013,在if巢狀的過程中不能確定到底else應該對於那個if

2、最後輸出判斷的時候,我寫的是if(leap=1),執行的時候發現能正常執行,但是永遠都是閏年,後來室友跟我說是因為那句話永遠都是對的,應該改成if(leap)或者if(leap==1),感覺自己還是對賦值符號跟等於符號沒有分清楚

3、vs2013要求輸入必須為scanf_s形式,在vc6.0中直接scanf就可以了

四、反思

更簡便的演算法:if (year%4==0&&year%100!=0||year%400==0)  leap=1;   else   leap=0;