2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 用linux下的C语言编程万年历 C语言 万年历程序

用linux下的C语言编程万年历 C语言 万年历程序

时间:2022-01-02 13:02:33

相关推荐

用linux下的C语言编程万年历 C语言 万年历程序

C语言 万年历程序

原代码:chunli@Linux:~/c++$cat123.c

#include

#defineMon1

#defineTues2

#defineWed3

#defineThur4

#defineFri5

#defineSat6

#defineSun0

#defineJanuary_days31

#defineFebruary_days28

#defineMarch_days31

#defineApril_days30

#defineMay_days31

#defineJune_days30

#defineJuly_days31

#defineAugust_days31

#defineSeptember_days30

#defineOctober_days31

#defineNovember_days30

#defineDecember_days31

#definefirst1monthJanuary_days

#definefirst2monthJanuary_days+February_days

#definefirst3monthJanuary_days+February_days+March_days

#definefirst4monthJanuary_days+February_days+March_days+April_days

#definefirst5monthJanuary_days+February_days+March_days+April_days+May_days

#definefirst6monthJanuary_days+February_days+March_days+April_days+May_days+June_days

#definefirst7monthJanuary_days+February_days+March_days+April_days+May_days+June_days+July_days

#definefirst8monthJanuary_days+February_days+March_days+April_days+May_days+June_days+July_days+August_days

#definefirst9monthJanuary_days+February_days+March_days+April_days+May_days+June_days+July_days+August_days+September_days

#definefirst10monthJanuary_days+February_days+March_days+April_days+May_days+June_days+July_days+August_days+September_days+October_days

#definefirst11monthJanuary_days+February_days+March_days+April_days+May_days+June_days+July_days+August_days+September_days+October_days+November_days

intknown_weekday=Tues;

intknown_year=1901;

intkonwn_month=1;

intknown_day=1;

intday_count(intmonth)

{

switch(month)

{

case1:return0;break;

case2:returnfirst1month;break;

case3:returnfirst2month;break;

case4:returnfirst3month;break;

case5:returnfirst4month;break;

case6:returnfirst5month;break;

case7:returnfirst6month;break;

case8:returnfirst7month;break;

case9:returnfirst8month;break;

case10:returnfirst9month;break;

case11:returnfirst10month;break;

case12:returnfirst11month;break;

}

}

char*month_name(intmonth)

{

switch(month)

{

case1:

return"一月";

break;

case2:

return"二月";

break;

case3:

return"三月";

break;

case4:

return"四月";

break;

case5:

return"五月";

break;

case6:

return"六月";

break;

case7:

return"七月";

break;

case8:

return"八月";

break;

case9:

return"九月";

break;

case10:

return"十月";

break;

case11:

return"十一月";

break;

case12:

return"十二月";

break;

default:

break;

}

}

/*按格式打印某年某月名称*/

voidfirst_line_print(intmonth,intyear)

{

//printf("%20s%d\n",month_name(month),year);

printf("%8d年%s\n",year,month_name(month));

}

/*按格式打印星期名称*/

voidweek_print()

{

//printf("%-6s%-6s%-6s%-6s%-6s%-6s%-6s\n","Sun.","Mon.","Tues.","Wed.","Thur.","Fri.","Sat.");

printf("%-4s%-4s%-4s%-4s%-4s%-4s%-4s\n","日","一","二","三","四","五","六");

}

/*计算该年该月份与已知日子之间的距离天数*/

intdate_distance_count(intmonth,intyear)

{

intleap_year_count=0;

inti;

intdistance;

if(year>known_year)

{

for(i=known_year;i

{

if(((i%4==0)&&(i%100!=0))||(i%400==0))

{

leap_year_count++;

}

}

if(month>2)

{

if(((year%4==0)&&(year%100!=0))||(year%400==0))

{

leap_year_count++;

}

}

}

else

if(year==known_year)

{

if(month>2)

{

leap_year_count=1;

}

}

distance=(year-known_year)*365+leap_year_count+day_count(month);

returndistance;

}

/*确定该月份第一天是星期几*/

intmakesure_firstday_weekday(intmonth,intyear)

{

intdate_distance=0;

intweekday;

date_distance=date_distance_count(month,year);

weekday=(known_weekday+date_distance)%7;

returnweekday;

}

/*依次打印出该月份的日子*/

voidprint_in_turn(intmonth,intfirstday,intyear)

{

inti=1;

intweekday;

switch(firstday)

{

caseSun:

break;

caseMon:

printf("%-3s","");

break;

caseTues:

printf("%-6s","");

break;

caseWed:

printf("%-9s","");

break;

caseThur:

printf("%-12s","");

break;

caseFri:

printf("%-15s","");

break;

caseSat:

printf("%-18s","");

break;

}

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

{

for(i=0;i<31;i++)

{

weekday=(firstday+i)%7;

printf("%-3d",i+1);

if(weekday==Sat)

{

printf("\n");

}

}

break;

}

case2:

{

if(((year%4==0)&&(year%100!=0))||(year%400==0))/*闰年*/

{

for(i=0;i<29;i++)

{

weekday=(firstday+i)%7;

printf("%-3d",i+1);

if(weekday==Sat)

{

printf("\n");

}

}

break;

}

else/*平年*/

{

for(i=0;i<28;i++)

{

weekday=(firstday+i)%7;

printf("%-3d",i+1);

if(weekday==Sat)

{

printf("\n");

}

}

break;

}

}

case4:

case6:

case9:

case11:

{

for(i=0;i<30;i++)

{

weekday=(firstday+i)%7;/*计算该天是星期几*/

printf("%-3d",i+1);

if(weekday==Sat)

{

printf("\n");/*如果是星期六,则换行*/

}

}

break;

}

}

}

voiddate_print(intmonth,intyear)

{

intfirstday;

firstday=makesure_firstday_weekday(month,year);

print_in_turn(month,firstday,year);

printf("\n");

}

voidmain_month(intmonth,intyear)

{

first_line_print(month,year);

week_print();

date_print(month,year);

printf("\n\n");

}

voidmain_calendar(intyear)

{

inti;

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

{

main_month(i,year);

}

}

intmain()

{

intyear;

printf("请输入年份:year=");

scanf("%d",&year);

printf("\n");

while(year

{

printf("请输入大于1901的年份\n");

printf("请输入年份:year=");

scanf("%d",&year);

printf("\n");

}

main_calendar(year);

return0;

}

chunli@Linux:~/c++$

编译运行:chunli@Linux:~/c++$gcc123.c&&./a.out

请输入年份:year=

一月

日一二三四五六

12

3456789

10111213141516

1718192223

24252627282930

31

二月

日一二三四五六

123456

78910111213

14151617181920

21222324252627

2829

三月

日一二三四五六

12345

6789101112

13141516171819

2223242526

2728293031

四月

日一二三四五六

12

3456789

10111213141516

1718192223

24252627282930

五月

日一二三四五六

1234567

891011121314

1516171819

22232425262728

293031

六月

日一二三四五六

1234

567891011

12131415161718

1922232425

2627282930

七月

日一二三四五六

12

3456789

10111213141516

1718192223

24252627282930

31

八月

日一二三四五六

123456

78910111213

14151617181920

21222324252627

28293031

九月

日一二三四五六

123

45678910

11121314151617

1819222324

252627282930

十月

日一二三四五六

1

2345678

9101112131415

1617181922

23242526272829

3031

十一月

日一二三四五六

12345

6789101112

13141516171819

2223242526

27282930

十二月

日一二三四五六

123

45678910

11121314151617

1819222324

25262728293031

chunli@Linux:~/c++$

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。