万年历c语言攀枝花,[原创] C语言实现:万年历

[原创] C语言实现:万年历

(2012-04-10 00:21:02)

标签:

万年历

原创

c语言

杂谈

[原创]

C语言实现:万年历经过近这几天的努力,终于写完了这个"万年历"的程序了,共享一下,

特别是同"勉"共享 {:3_193:}

[需求]

请打印出任意年份的日历

[代码]

#include

#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

{

printf(" ");

}

for(i=1;i<=length;++i)

{

weekDay = (++weekDay)%7;

printf("}", i);

if(weekDay==0)

printf("\n");

}

printf("\n");

}

int isLeapYear(const int yr)

{

return ( yr%( yr0 ? 4:400) ? 0 : 1);

}

int getYearDay(const int 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(const int y)

{

WEEK yDay = getYearDay(y);

int vDay = isLeapYear(y);

int monWeeks;

int monLen ;

monLen=0;

monLen=31; monLen=28+vDay; monLen=31;

monLen=30; monLen=31; monLen=30;

monLen=31; monLen=31; monLen=30;

monLen=31; monLen=30; monLen=31;

monWeeks=0;

monWeeks = yDay;

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

monWeeks = ((monWeeks +monLen )%7);

int i;

for(i=January; i<=December; ++i)

{

printf("\n-------------------------------------------------\n");

printf(" %d, %d \n",y,i);

printf("-------------------------------------------------\n");

printMonth(monWeeks,monLen);

printf("\n");

}

return;

}

int main(void)

{

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);

return 0;

}输出

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

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值