《万年历C语言设计(共11页).doc》由会员分享,可在线阅读,更多相关《万年历C语言设计(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上万年历的设计:要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。万年历的程序流程图: 主要程序流程图:Memu-slect()=1Printf(“输入年月日计算星期”)开始Memu-slect()=2Memu-slect()=3Memu-slect()=4Printf(“输入年月日计算星期”)Printf(“输入年月日计算星期”)Printf(“输入年月日计算星期”)结束 具体对于月份和年份的程序图如下: 上图为计算星期方法 上
2、图为打印日历程序图 万年历的设计的程序源代码:#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(month12|month31|day2)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:prin
3、tf(星期三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(month12|month1) printf(输入错误,重新输入); scanf(%d%d,&year,&month);else break;b=days_month(month,ye
4、ar);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)retu
5、rn 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+ye
6、ar/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+)printf(%4d,i);if(i%7=0)printf(n)
7、;j=1;k=1;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);void main()for(;)switch(menu_select()case 1:printf(输入年月日计算星期几n);f();break;case 2:printf(打印任意日历n);g();break;case 3:printf(打印任意年历n);h();break;case 4:printf(谢谢使用!n);exit(0);int menu_select()char S;int cn;printf(1.输入年月日计算星期几n);printf(2.打印任意月历n);printf(3.打印任意年历n);printf(4.谢谢使用! n);printf(input 1-4:n);do S=getchar();cn=(int)S-48;while(cn6);return cn;万年历的运行结果截图万年历的日历功能的实现:月历功能的实现:年历功能的实现:专心-专注-专业
限制150内