程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言實現某年某月某日是某年的第幾天

C語言實現某年某月某日是某年的第幾天

編輯:關於C

看到這個標題,想實現這樣的功能其實挺簡單的,用C語言的switch語句加上閏年,平年條件的判斷,再加上一定的邏輯可以輕松實現這樣的函數,在linux內核中,存在判斷閏年平年的接口,我將它移植出來後,寫成一個宏,供計算天數的函數來調用,看看是不是可以實現,來,上代碼:大笑

#include<stdio.h>
#include<stdlib.h>
enum 
{
	zero = 0 ,NUM_TWO = 2, NUM_THR = 13 ,tw_e = 28 ,
	tw_n = 29 ,st_z = 30 , st_o = 31 ,
};
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))  //判斷是閏年還是平年
static int years[NUM_TWO][NUM_THR]= 
{
	{zero,st_o,tw_e,st_o,st_z,st_o, \
	 st_z,st_o,st_o,st_z,st_o,st_z,st_o},
	{zero,st_o,tw_n,st_o,st_z,st_o, \
	 st_z,st_o,st_o,st_z,st_o,st_z,st_o}
};
static int Count(int year,int month,int day) ;
int main()
{
	int year,month,day,m;
	int day_num ;
	printf("please input (year-month-day)\n");
	scanf("%d-%d-%d",&year,&month,&day);  //按上面說的格式輸入
	day_num = Count(year,month,day);      
	printf("day_num:%d\n",day_num);
	return 0;
}

static int Count(int year,int month,int day)
{
	int flag = 0 ;
	static int i ;
	if(isleap(year))  //判斷是閏年還是平年
		flag=1;   //是閏年就把標志置一
	for(i=0;i<month;i++) return="" day="" pre="">運行結果:<p>
</p><p>我們可以看到,今天是2016年2月23日,是2016年的第54天!時間過得好快呀,兩個月就快過去了噢,希望各位同行好好珍惜時間,有時間多多學習技術知識!<img alt="得意" data-cke-saved-src=/uploadfile/2016/0224/20160224104640618.gif" src=/uploadfile/2016/0224/20160224104640618.gif"></p><p><img data-cke-saved-src=/uploadfile/2016/0224/20160224104640570.png" src=/uploadfile/2016/0224/20160224104640570.png" alt="">


</p>
  
</month;i++)></stdlib.h></stdio.h>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved