收藏 分销(赏)

万年历C语言设计.doc

上传人:精*** 文档编号:1362688 上传时间:2024-04-24 格式:DOC 页数:11 大小:348KB 下载积分:8 金币
下载 相关 举报
万年历C语言设计.doc_第1页
第1页 / 共11页
万年历C语言设计.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
万年历的设计: 要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。 万年历的程序流程图: 主要程序流程图: Memu-slect()=1 Printf(“输入年月日计算星期”) 开始 Memu-slect()=2 Memu-slect()=3 Memu-slect()=4 Printf(“输入年月日计算星期”) Printf(“输入年月日计算星期”) Printf(“输入年月日计算星期”) 结束 具体对于月份和年份的程序图如下: 上图为计算星期方法 上图为打印日历程序图 万年历的设计的程序源代码: #include <stdio.h> #include <stdlib.h> #include <ctype.h> 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++) {printf("%4d",i); if(i%7==0) {printf("\n"); } } } 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(cn<0||cn>6); return cn; } 万年历的运行结果截图 万年历的日历功能的实现: 月历功能的实现: 年历功能的实现:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服