• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

C语言实现万年历代码实例

时间:2015年04月02日 15:45:18    来源:魔法猪系统重装大师官网    人气:14352

     经过近这几天的努力,终于写完了这个"万年历"的程序了,共享一下, 特别是同"勉"共享 

[需求]
    请打印出任意年份的日历
[代码]
#include <stdio.h>

#define LMonth 31
#define SMonth 30
#define VMonth 28

typedef
enum {
    Sun,
    Mon,
    Jue,
    Wed,
    Thu,
    Fri,
    Sat
} WEEK;

typedef
enum {
    January
=1,
February,
    Match,
    Apirl,
    May,
    June,
    July,
    August,
September,
    October,
    November,
    December
} MONTH;

void printMonHead(void)
{
   printf(
"    Sun    Mon    Jue    Wed    Thu    Fri    Sat\n");
}

void  printMonth(const WEEK firstDay, int length )
{
     WEEK weekDay
= firstDay %7;

    
int i;

     printMonHead();

    
for (i=0; i<weekDay;++i)
     {
         printf(
"");
     }

   
for(i=1;i<=length;++i)
    {
          weekDay
= (++weekDay)%7;
          printf(
"%7d", i);

         
if(weekDay==0) printf("\n");
    }

    printf(
"\n");
}


int isLeapYear(constint yr)
{
   
return ( yr%( yr%100?4:400) ?0 : 1);
}


int getYearDay(constint year)
{

   
int lastYear = year-1;
   
int yearNum = lastYear-1899;

   
int walker,counter=0;
   
for(walker=1900; walker < year; ++walker)
    {
       
if(isLeapYear(walker)==1)
           
++counter;
    }

   
return (365*yearNum+counter+1)%7;
}


void printYear(constint y)
{
    WEEK yDay
= getYearDay(y);
   
int  vDay = isLeapYear(y);

   
int monWeeks[13];
   
int monLen  [13];

    monLen[
0]=0;
    monLen[January]
=31;     monLen[February]=28+vDay;   monLen[Match]=31;
    monLen[Apirl]
=30;       monLen[May]=31;             monLen[June]=30;
    monLen[July]
=31;        monLen[August]=31;          monLen[September]=30;
    monLen[October]
=31;     monLen[November]=30;        monLen[December]=31;

    monWeeks[
0]=0;
    monWeeks[January]  
= yDay;
    monWeeks[February] 
= ((monWeeks[January]       +monLen[January]        )%7);
    monWeeks[Match]    
= ((monWeeks[February]      +monLen[February]       )%7);
    monWeeks[Apirl]    
= ((monWeeks[Match]         +monLen[Match]          )%7);
    monWeeks[May]      
= ((monWeeks[Apirl]         +monLen[Apirl]          )%7);
    monWeeks[June]     
= ((monWeeks[May]           +monLen[May]            )%7);
    monWeeks[July]     
= ((monWeeks[June]          +monLen[June]           )%7);
    monWeeks[August]   
= ((monWeeks[July]          +monLen[July]           )%7);
    monWeeks[September]
= ((monWeeks[August]        +monLen[August]         )%7);
    monWeeks[October]  
= ((monWeeks[September]     +monLen[September]      )%7);
    monWeeks[November] 
= ((monWeeks[October]       +monLen[October]        )%7);
    monWeeks[December] 
= ((monWeeks[November]      +monLen[November]       )%7);

   
int i;
   
for(i=January; i<=December; ++i)
    {
        printf(
"\n-------------------------------------------------\n");
        printf(
"                     %d, %d                      \n",y,i);
        printf(
"-------------------------------------------------\n");
        printMonth(monWeeks[i],monLen[i]);
        printf(
"\n");
    }

   
return;
}


int main(void)
{
//  int y3 = 2000;
//  int y3 = 1946;
//  printYear(y3);
int y;
 
int quit=0;

 
do
    {
        printf(
"Please enter which Year to Print For You (0 to quit): ");
        scanf(
"%d",&y);
        printf(
"\n");

       
if(y==0)
            quit
=1;
       
else
            printYear(y);

    }
while(!quit);

 
return0;
}
 
 
[输出]
Please enter which Year to Print For You (0 to quit): 1973
 
 
Please enter which Year to Print For You (0 to quit): 1973
 
 

 
 
 
-------------------------------------------------
                     1946, 1                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                    1      2      3      4      5
      6      7      8      9     10     11     12
     13     14     15     16     17     18     19
     20     21     22     23     24     25     26
     27     28     29     30     31
 
 
-------------------------------------------------
                     1946, 2                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                                         1      2
      3      4      5      6      7      8      9
     10     11     12     13     14     15     16
     17     18     19     20     21     22     23
     24     25     26     27     28
 
 
-------------------------------------------------
                     1946, 3                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                                         1      2
      3      4      5      6      7      8      9
     10     11     12     13     14     15     16
     17     18     19     20     21     22     23
     24     25     26     27     28     29     30
     31
 
 
-------------------------------------------------
                     1946, 4                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri   Sat
             1      2      3      4      5      6
      7      8      9     10     11     12     13
     14     15     16     17     18     19     20
     21     22     23     24     25     26     27
     28     29     30
 
 
-------------------------------------------------
                     1946, 5                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                           1      2      3      4
      5      6      7      8      9     10     11
     12     13     14     15     16     17     18
     19     20     21     22     23     24     25
     26     27     28     29     30     31
 
 
-------------------------------------------------
                     1946, 6                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                                                1
      2      3      4      5      6      7      8
      9     10     11     12     13     14     15
     16     17     18     19     20     21     22
     23     24     25     26     27     28     29
     30
 
 
-------------------------------------------------
                     1946, 7                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
             1      2      3      4      5      6
      7      8      9     10     11     12     13
     14     15     16     17     18     19     20
     21     22     23     24     25     26     27
     28     29     30     31
 
 
-------------------------------------------------
                     1946, 8                     
-------------------------------------------------
    Sun    Mon    Jue    Wed   Thu    Fri    Sat
                                  1      2      3
      4      5      6      7      8      9     10
     11     12     13     14     15     16     17
     18     19     20     21     22     23     24
     25     26     27     28     29     30     31
 
 
 
-------------------------------------------------
                     1946, 9                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
      1      2      3      4      5      6      7
      8      9     10     11     12     13     14
     15     16     17     18     19     20     21
     22     23     24     25     26     27     28
     29     30
 
 
-------------------------------------------------
                     1946, 10                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                    1      2      3      4      5
      6      7      8      9     10     11     12
     13     14     15     16     17     18     19
     20     21     22     23     24     25     26
     27     28     29     30     31
 
 
-------------------------------------------------
                     1946, 11                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
                                         1      2
      3      4      5      6      7      8      9
     10     11     12     13     14     15     16
     17     18     19     20     21     22     23
     24     25     26     27     28     29     30
 
 
 
-------------------------------------------------
                     1946, 12                     
-------------------------------------------------
    Sun    Mon    Jue    Wed    Thu    Fri    Sat
      1      2      3      4      5      6      7
      8      9     10     11     12     13     14
     15     16     17     18     19     20     21
     22     23     24     25     26     27     28
     29     30     31
 

语言,实现,万年历,代码,实例,经过,近,这几天,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部