⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单片机万年历.c

📁 自己写的测试程序,调试已通过,可以直接使用, 而且有的还有详细的注释.单片机万年历
💻 C
📖 第 1 页 / 共 2 页
字号:
                   {
                        if(((i-1)%4==0&&(i-1)%100!=0)||((i-1)%400==0))
	                          now=now+366;
                            /*如果i年份是闰年,则now的值增加366*/ 
	                    else 
                               now=now+365;
                              /*如果i年份不是闰年,则now的值增加355*/  
	               } 	
             if  ((year%4==0&&year%100!=0)||(year%400==0))
                    { /*若该年份是闰年,则该月第一日与该年第一日距离的天数由month的值
                 决定,分别是366,335,306,275,245,214,184,153,122,92,61,31
                   该月的天数同时也由month的值决定*/
                        
                     	switch(month)
	                      {
	                              case 1 : 
                                         { 
                                                now=now+366;
                                                j=31;
                                             /* momth=1,第1月第1日与该年1月1日相距366天故now加上366,
                                               1月全月共有31天*/    
                                        } 
                                        break;
         
                                  case  2:
                                         {
                                                 now=now+335;
                                                 j=29;
                                               /* month=2,第2月第1日与该年1月1日相距335天
                                                故now加上31,闰年的2月全月共有29天*/   
                                         }
                                         break;
               
                                  case  3: 
                                         {
                                                 now=now+306;
                                                 j=31;
                                         }
                                         break;
               
                                 case  4: 
                                        {
                                                 now=now+275;
                                                 j=30;
                                        }
                                         break;
               
               
                                case  5: 
                                         {
                                                  now=now+245;
                                                  j=31;
                                        }
                                        break;
               
               
                                 case  6: 
                                         {
                                                  now=now+214;
                                                   j=30;
                                         }
                                        break;
               
               
                                 case  7:
                                        {
                                                  now=now+184;
                                                  j=31;
                                        }
                                        break;
                
                                 case  8:
                                        {
                                                  now=now+153;
                                                  j=31;
                                        }
                                        break;
                
                                case  9: 
                                       {
                                                 now=now+122;
                                                 j=30;
                                       }
                                       break;
               
                               case  10: 
                                      {
                                                now=now+92;
                                                j=31;
                                     }
                                     break;
               
                               case  11: 
                                     {
                                               now=now+61;
                                               j=30;
                                     }
                                     break;
                       
                              case  12: 
                                     {
                                               now=now+31;
                                               j=31;
                                    }
                                     break;
                         }
              }
       else
              {
                  /*若该年份是闰年,则该月第一日与该年第一日距离的天数由month的值
                 决定,分别是365,334,306,275,245,214,184,153,122,92,61,31
                   该月的天数同时也由month的值决定*/
	             switch(month)
	                 {
                             case 1 : 
                                    {
                                             now=now+365;
                                             j=31;
                                        /* momth=1,第1月第1日与该年1月1日相距365天故now加上365,
                                               1月全月共有31天*/      
                                    }
                                    break;
               
                            case  2: 
                                     {
                                                now=now+334;
                                                j=28;
                                         /* month=2,第2月第1日与该年1月1日相距335天
                                                故now加上31,非闰年的2月全月共有28天*/         
                                    }
                                    break;
               
                           case  3: 
                                   {
                                               now=now+306;
                                               j=31;
                                   }
                                    break;
               
                           case  4:
                                   {
                                               now=now+275;
                                               j=30;
                                  }
                                    break;
                
                            case  5:
                                   {
                                              now=now+245;
                                              j=31;
                                   }
                                    break;
                
                           case  6: 
                                  {
                                              now=now+214;
                                              j=30;
                                  }
                                  break;
               
                          case  7:
                                  {
                                              now=now+184;j=31;
                                  }
                                  break;
                
                          case  8:
                                  {
                                               now=now+153;
                                               j=31;
                                  }
                                  break;
                
                        case  9:
                                 {
                                             now=now+122;
                                             j=30;
                                }
                                 break;
                
                        case  10:
                                  {
                                             now=now+92;
                                             j=31;
                                  }
                                 break;
                
                         case  11: 
                                {
                                          now=now+61;
                                          j=30;
                                }
                                   break;
               
                         case  12: 
                                {
                                            now=now+31;
                                            j=31;
                                }
                                  break;
                     }  
             } 
             
      k=6-((now-1)%7);
      h=k*8-1;  
       /*(7-(now%7))%7的值是该月第一日的星期数(日,一,二...),为使日历排列整齐
     在日历的第一排(第一日不是星期日时)空出h个空格,相邻俩数相隔8个空格*/
     }	   
}


 
  
  int dayin()
 {
         
      int a=0;
      int n=1;
     
      printf("\n");   
      printf("********************************************************************************\n");
   
      printf("                         万  年  历  %d年%d月\n\n",year,month   );                      
   
      printf("********************************************************************************\n");
    
      printf("    Sun     Mon     Tue     Wed     Thu     Fri     Sat                        ");
      printf("\n\n");
      for(a=0; a<=h;a++)/*打印第一个日期前的空格,使之整齐*/	
      printf(" ");
    
       
      for(n=1;n<=j;k++,n++)/*从第一日开始打印,所以n初始值为1*/ 
            {
                  printf("%7d " , n);  
                  if(month==1&&n==1)printf("\b*");
                  /*为重大节日添加标记'*',本个if语句用于标记元旦,以下相同*/
                  if(month==5&&n==1)printf("\b*");
                  if(month==6&&n==1)printf("\b*");
                  if(month==9&&n==10)printf("\b*");
                  if(month==10&&n==1)printf("\b*");
                 if(k%7==6)
                       {/*道星期六就换行,使日期整齐排列*/
                         printf("\n");
                          if(a>0)
                             {
                                 a=a-300;/*使a足够小,再也不在一行的开头打印空格了*/
                              printf("                                                     ^^\n");
                             /*当该月的第一日不为星期日时,仅标记星期六,符号'^^'恰好打印在其下方*/
                             }
                         else printf("     ^^                                              ^^\n");
                             /*当该行的第一日为星期日时,标记星期日和星期六*/
                        }
            }
     if(k%7!=0) printf("\n     ^^"); 
       /*当该月的最后一日不为星期六时,仅标记星期日*/
     if(month==1) printf("\n     *** 1月1日-元旦 ***\n"); 	/*打印节日提醒*/
     if(month==5) printf("\n     *** 5月1日-劳动节 ***\n"); 	
     if(month==6) printf("\n     *** 6月1日-儿童节 ***\n"); 	
     if(month==9) printf("\n     *** 9月10日-教师节 ***\n"); 	
     if(month==10) printf("\n     *** 10月1日-国庆节 ***\n");
   
   return 0;
   }   
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -