計算某年各月的天數

  只是小的進步,畢竟是自己想出來的,保留下來,以鼓勵自己繼續努力:

#include <stdio.h>

int isLeap(int y);
int dofm(int m, int y);

int main(void)
{
	/* 測試月份的第一位和第四位,異或爲1代表大月31天,反之30天 
	int a=0;
	for(a=1; a<=12; a++)
		printf("%x,%x,%x\n", (a & 8)>>3, a & 1, ((a & 8)>>3) ^ (a & 1) );
	*/
	int year, month, days;
	printf("請輸入一個公元年(如2015):");
	scanf("%d", &year); 
	printf("%d年各月天數:\n", year);
	for(month=1;month<=12;month++){
		printf("%d月有%d天。\n", month, dofm(month, year));
	} 
	return 0;
}

int isLeap(int y)
{
	return (y%4==0 && y%100!=0 || y%400==0);
}

int dofm(int m, int y)
{
	int d;
	if(m!=2)
		d = ((m&8)>>3)^(m&1)?31:30;
	else 
		d = isLeap(y)?29:28;
	return d;		
}


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