经过近这几天的努力,终于写完了这个"万年历"的程序了,共享一下, 特别是同"勉"共享
[需求] 请打印出任意年份的日历 [代码] #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 ");
}
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("%7d", i);
if(weekDay==0) printf(" ");
}
printf(" ");
}
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(" ------------------------------------------------- ");
printf(" %d, %d ",y,i);
printf("------------------------------------------------- ");
printMonth(monWeeks[i],monLen[i]);
printf(" ");
}
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(" ");
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
在原神游戏中,终末嗟叹之诗也是五星的弓系角色,它可以提升角色的基础攻击力和元素充能效率,能力还是不错的,有玩家对于这个武器还不是很了解,接下来小编为大家带来了详细
在原神游戏中,四风原典是五星法器,这个法器可以增加角色的基础攻击力以及暴击率,而且还可以提高移动速度,有玩家对于这个武器还不是很了解,接下来小编为大家带来了详细介
放置江湖中,玩家人物等级大于300,前往扬州“通泗门”处寻找尤三完成引导任务,即开启家园系统玩法,家园分为简屋、秀筑、豪宅、特殊豪宅。玩家可以对对房屋内的房间进行改造,不同房形之间可以进行扩建。
京城丐帮找郭靖入队后,客栈触发黄蓉事件后,触发假药事件,有灵巧要求选择相信孩子,剩下跟着剧情走。
全部可通过活动免费获取。支持超过3件圣痕成套,任意不同位置的2件或3件圣痕均可触发套装技能效果。全新图鉴分类开放,集齐整套可得纪念奖励!
在原神游戏中,终末嗟叹之诗也是五星的弓系角色,它可以提升角色的基础攻击力和元素充能效率,能力还是不错的,有玩家对于这个武器还不是很了解,接下来小编为大家带来了详细
在原神游戏中,四风原典是五星法器,这个法器可以增加角色的基础攻击力以及暴击率,而且还可以提高移动速度,有玩家对于这个武器还不是很了解,接下来小编为大家带来了详细介
放置江湖中,玩家人物等级大于300,前往扬州“通泗门”处寻找尤三完成引导任务,即开启家园系统玩法,家园分为简屋、秀筑、豪宅、特殊豪宅。玩家可以对对房屋内的房间进行改造,不同房形之间可以进行扩建。
京城丐帮找郭靖入队后,客栈触发黄蓉事件后,触发假药事件,有灵巧要求选择相信孩子,剩下跟着剧情走。
全部可通过活动免费获取。支持超过3件圣痕成套,任意不同位置的2件或3件圣痕均可触发套装技能效果。全新图鉴分类开放,集齐整套可得纪念奖励!