万年历c语言程序的思路,万年历c语言程序,新手

编程入门 行业动态 更新时间:2024-10-16 20:31:26

<a href=https://www.elefans.com/category/jswz/34/1766894.html style=万年历c语言程序的思路,万年历c语言程序,新手"/>

万年历c语言程序的思路,万年历c语言程序,新手

万年历c程序

#include

精彩内容,尽在百度攻略:

code unsigned char WeekTab[] = {//闰年月星期表

(3 << 5) + 31,//1月

(6 << 5) + 29,//2月精彩内容,尽在百度攻略:

(0 << 5) + 31,//3月

(3 << 5) + 30,//4月

(5 << 5) + 31,//5月精彩内容,尽在百度攻略:

(1 << 5) + 30,//6月

(3 << 5) + 31,//7月

(6 << 5) + 31,//8月精彩内容,尽在百度攻略:

(1 << 5) + 30,//9月

(4 << 5) + 31,//10月

(0 << 5) + 30,//11月精彩内容,尽在百度攻略:

(2 << 5) + 31 //12月

};

精彩内容,尽在百度攻略:

/*------------------------------------------------------------------------------

----------

2000年~2099年星期算法精彩内容,尽在百度攻略:

--------------------------------------------------------------------------------

---------*/

unsigned char WeekDay20(unsigned char y, unsigned char m, unsigned char d) {精彩内容,尽在百度攻略:

unsigned char week, day;

day = WeekTab[m - 1];//月表

week = day >> 5;//月星期数精彩内容,尽在百度攻略:

day &= 0x1f;//月天数

if ((m < 3) && (y & 0x03)){//平年

if (m == 2) day--;//平年月天数精彩内容,尽在百度攻略:

week++;//平年月表+1

}

y = y + (y >> 2);//年+年/4精彩内容,尽在百度攻略:

week = (week + y + d + 2) % 7;//(星期=年+年/4+月表+2日)%7

return (week << 5) | day;//返回星期和月天数

}精彩内容,尽在百度攻略:

/*------------------------------------------------------------------------------

----------精彩内容,尽在百度攻略:

0000年~9999年星期算法

--------------------------------------------------------------------------------

---------*/精彩内容,尽在百度攻略:

unsigned char WeekDay(unsigned char c, unsigned char y, unsigned char m,

unsigned char d)

{精彩内容,尽在百度攻略:

unsigned char week, day;

c &= 0x03;//百年%4

c = c | (c << 2);//百年%4*5精彩内容,尽在百度攻略:

day = WeekTab[m - 1];//月表

week = day >> 5;//月星期数

day &= 0x1f;//月天数精彩内容,尽在百度攻略:

if ((m < 3) && !((c == 0) | (y & ((y & 0x03) == 0)))){//平年

if (m == 2) day--;//平年月天数

week++;//平年月表+1精彩内容,尽在百度攻略:

}

y = y + (y >> 2);//年+年/4

week = (week + c + y + d + 2) % 7;//(星期=百年%4*5+年+年/4+月表+日+2)%7 return (week << 5) | day;//返回星期和月天数精彩内容,尽在百度攻略:

}

unsigned char BcdToBin(unsigned char val)精彩内容,尽在百度攻略:

{

val = (val>> 4) * 10 + (val& 0x0f);//将BCD码转换为10进制数

return val;//返回10进制数精彩内容,尽在百度攻略:

}

void main(void)精彩内容,尽在百度攻略:

{

unsigned char c, y, m, d;

unsigned char cx, yx, mx, dx;精彩内容,尽在百度攻略:

unsigned char WDay, Week, Day;

/*---------------------------------------------------------

0001年1月1日星期天精彩内容,尽在百度攻略:

---------------------------------------------------------*/

c = 0x00;

y = 0x01;精彩内容,尽在百度攻略:

m = 0x01;

d = 0x01;

cx = BcdToBin(c);//百年精彩内容,尽在百度攻略:

yx = BcdToBin(y);//年

mx = BcdToBin(m);//月

dx = BcdToBin(d);//日精彩内容,尽在百度攻略:

WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数

Week = WDay>> 5;//得到星期

Day = WDay& 0x1f;//得到最大月天数精彩内容,尽在百度攻略:

/*---------------------------------------------------------

1918年1月21日星期一

---------------------------------------------------------*/ c = 0x19;精彩内容,尽在百度攻略:

y = 0x18;

m = 0x01;

d = 0x21;精彩内容,尽在百度攻略:

cx = BcdToBin(c);//百年

yx = BcdToBin(y);//年

mx = BcdToBin(m);//月精彩内容,尽在百度攻略:

dx = BcdToBin(d);//日

WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数 Week = WDay>> 5;//得到星期

Day = WDay& 0x1f;//得到最大月天数 /*--------------------------------------------------------- 9999年12月31日星期天精彩内容,尽在百度攻略:

---------------------------------------------------------*/ c = 0x00;

y = 0x01;

m = 0x01;精彩内容,尽在百度攻略:

d = 0x01;

cx = BcdToBin(c);//百年

yx = BcdToBin(y);//年精彩内容,尽在百度攻略:

mx = BcdToBin(m);//月

dx = BcdToBin(d);//日

WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数 Week = WDay>> 5;//得到星期精彩内容,尽在百度攻略:

Day = WDay& 0x1f;//得到最大月天数 /*--------------------------------------------------------- 2004年6月18日星期五

---------------------------------------------------------*/ c = 0x20;

y = 0x04;精彩内容,尽在百度攻略:

m = 0x06;

d = 0x18;

cx = BcdToBin(c);//百年精彩内容,尽在百度攻略:

yx = BcdToBin(y);//年

mx = BcdToBin(m);//月

dx = BcdToBin(d);//日精彩内容,尽在百度攻略:

WDay = WeekDay20(yx, mx, dx);//取星期和月天数 Week = WDay>> 5;//得到星期

Day = WDay& 0x1f;//得到最大月天数 /*--------------------------------------------------------- 2018年3月8日星期四

---------------------------------------------------------*/ c = 0x20;精彩内容,尽在百度攻略:

y = 0x18;

m = 0x03;

d = 0x08;精彩内容,尽在百度攻略:

cx = BcdToBin(c);//百年

yx = BcdToBin(y);//年

mx = BcdToBin(m);//月精彩内容,尽在百度攻略:

dx = BcdToBin(d);//日

WDay = WeekDay20(yx, mx, dx);//取星期和月天数 Week = WDay>> 5;//得到星期

Day = WDay& 0x1f;//得到最大月天数 while(1);精彩内容,尽在百度攻略:

更多推荐

万年历c语言程序的思路,万年历c语言程序,新手

本文发布于:2024-03-14 23:54:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737641.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:万年历   语言   程序   思路   新手

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!