万年历C语言设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

万年历的设计:

要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。

万年历的程序流程图:

主要程序流程图:

具体对于月份和年份的程序图如下:

上图为计算星期方法上图为打印日历程序图

万年历的设计的程序源代码:

#include

#include

#include

void f()

{

int day,month,year,sum,leap,S;

printf("\n请输入年月日\n");

scanf("%d%d%d",&year,&month,&day);

while(1)

{

if((month>12||month<1)||(day>31||day<1))

{

printf("输入错误,重新输入");

scanf("%d%d%d",&year,&month,&day);

}

else break;

}

switch(month)

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day;

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

leap=1;

else leap=0;

if(leap==1&&month>2)

sum++;

S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; switch(S)

{

case 1:printf("星期一\n");break;

case 2:printf("星期二\n");break;

case 3:printf("星期三\n");break;

case 4:printf("星期四\n");break;

case 5:printf("星期五\n");break;

case 6:printf("星期六\n");break;

case 0:printf("星期日\n");break;

}

}

void g()

{int i,j=1,k=1,a,b,month,year;

printf("\n输入年月:\n");

scanf("%d%d",&year,&month);

while(1)

{

if(month>12||month<1)

{

printf("输入错误,重新输入");

scanf("%d%d",&year,&month);

}

else break;

}

b=days_month(month,year);

a=firstday (month,year);

printf("*************************************\n"); printf(" Sun Mon Tue Wed Thu Fri Sat \n");

if(a==7)

{for(i=1;i<=b;i++)

{printf("%4d",i);

if(i%7==0)

{printf("\n");

}

}

}

if(a!=7)

{while (j<=4*a)

{printf(" ");

j++;

}

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

{printf("%4d",i);

if(i==7*k-a)

{printf("\n");

k++;

}

}

}

printf("\n*************************************\n");

printf("\n");}

int leap (int year)

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

return 1;

else return 0;

}

int days_month (int month,int year)

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31;

if(month==4||month==6||month==9||month==11)

return 30;

if(month==2&&leap(year)==1) return 29;

else return 28;

}

int firstday(int month,int year)

{int W;

W=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;

return W;

}

void h()

{int i,j=1,k=1,a,b,month,year,g;

printf("\n输入任意年:\n");

scanf("%d",&year);

for(g=0;g<=11;g++)

{

month=g+1;

b=days_month(month,year);

a=firstday (month,year);

printf("%d月\n",month);

printf("*************************************\n");

printf(" Sun Mon Tue Wed Thu Fri Sat \n");

if(a==7)

{for(i=1;i<=b;i++)

相关文档
最新文档