找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1058|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机C语言计算某一天是星期几源程序(菜农星期算法)

[复制链接]
跳转到指定楼层
楼主
ID:887371 发表于 2022-4-18 11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
算法用C语言实现。
  1. #include <REG52.H>
  2. #include <stdio.h>
  3. /*
  4. 菜农星期算法
  5. 返回值:星期 对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
  6. c:世纪-1,如2022年是21世纪,c取值20
  7. y:年,取后两位数。如2022年,y取值22
  8. m:月
  9. d:日
  10. */
  11. unsigned char getweek(unsigned char c, unsigned char y, unsigned char m, unsigned char d)
  12. {
  13.         if (m <= 2)//1,2月变为去年的13,14月
  14.         {
  15.                 if(0==y)
  16.                 {
  17.                         y = 99;
  18.                         if (0==c)
  19.                                 c = 99;
  20.                         else
  21.                                 c --;
  22.                 }
  23.                 else
  24.                         y --;
  25.                 m |= 4;//1,2月查5,6月表
  26.         }
  27.         /*
  28.         菜农星期算法
  29.         星期=(百年%4*5+年+年/4+(13*月+8)/5+日)%7
  30.         */
  31.         return ((c & 3) * 5 + y + (y >> 2) + (13 * m + 8) / 5 + d) % 7;        
  32. }
  33. void main (void)
  34. {
  35.         //Setup the serial port for 1200 baud at 16MHz.
  36.         SCON  = 0x50;                        /* SCON: mode 1, 8-bit UART, enable rcvr      */
  37.         TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
  38.         TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
  39.         TR1   = 1;                  /* TR1:  timer 1 run                          */
  40.         TI    = 1;                  /* TI:   set TI to send first char of UART    */
  41.     printf("20220418 week=%bd\n",getweek(20, 22, 4, 18));
  42.         while(1){

  43.         }
  44. }
复制代码

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表