版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+程序设计说明书题目:万年历 班级学号: 学生姓名: 目录一 应用程序的名称二 应用程序的主题、设计目的三 应用程序简介1程序的基本结构及内容2. 程序的运行环境四主要运行界面的介绍五程序亮点六课程设计中存在的问题及解决方法一课程设计名称 万年历二应用程序要求、目的主题:万年历目的:实现对年月的查询三应用程序简介 (1)基本结构: 整个程序有cls_screen(清屏)、judgement(判断是否为闰年)、show_week(记录周几)、print_year(查询某年)、print_year_month(查询某年某月)等自定义函数,程序中涉及到switch语句、for语句、if语句等和多次
2、函数调用语句,开头定义了day_of_month数组,主要目的是将12个月每个月有多少天依次排出,在后面又用if语句判断二月的天数是28还是29。在主函数中运用while语言与switch语句的嵌套,是程序拥有了循环的功能。用fflush(stdin);语句清除输入缓存,使程序在使用过程中不会太过眼花缭乱。 万年历的编程,需要两个方面的讨论和研究,一是要在用户输入年份的时候,判断该年是否为闰年,而对于闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。所以会改变day_of_month数组中的二月份的数值。二是在用户输入年月份的时候,判断该年该月的第一天是周几
3、,从来好排列。而对于判断周几,需要运用公式:w=(y+y/4+c/4-2c+26(m+1)/10+d-1)%7并用if语句使用判断。通过这两个方面的讨论和实现,才能合理的编程出万年历的基本程序代码。 (2)源程序代码:#include#include #include #include #include int year , month , day ;int day_of_month12 = 31,28,31,30,31,30,31,31,30,31,30,31;int current_year,current_month,current_day;void cls_screen()printf
4、(请按任意键返回!n);getchar();getchar();system(cls);int judgement (int y)if (y % 400 = 0 | (y % 100 !=0 & y %4 =0)return 1 ;else return 0 ;int show_week (int year , int month , int day)/*公式:w=(y+y/4+c/4-2c+26(m+1)/10+d-1)%7*/int w ,k;int year_last=year %100,c=year/100 , m = month;if (month=1 )year_last-=1 ;
5、else if (month=2)year_last-=1;w = (year_last + year_last/4 + c/4 - 2*c +26*(m+1)/10+day-1);if (w0)k=(w%7+7)%7;else k=w%7;return k ;void print_year (int year)int i , k ,x ,first_week;printf (请输入想要查询的年份(格式如2012):);scanf (%d,&year);printf(=%d年=n,year);printf(n);if (judgement(year)day_of_month1=29;else
6、day_of_month1=28;for (i=1 ; i 13 ; i+)first_week = show_week(year,i,1);printf(=%d月日历如下=n,i);printf (SuntMontTuetWedtThutFritSatn);for (x=1;x=first_week;x+)printf(t);if (x%7=0) printf (n);for (k=1;k=day_of_monthi-1;k+)printf(%dt,k);if (x%7=0) printf (n);x+;printf(n);printf(n);printf(n);void print_yea
7、r_month ()int k ,x ,first_week;printf (请输入想要查询的年月(格式如2012 12):);doscanf (%d %d,&year,&month);if (month12)printf(您输入的月份有误哦请输入正确的月份n);printf (请输入想要查询的年月(格式如2012 12):);while(1month|month12);printf(=%d年%d月=n,year,month);if (judgement(year)day_of_month1=29;else day_of_month1=28;first_week = show_week(yea
8、r,month,1);printf (SuntMontTuetWedtThutFritSatn);for (x=1;x=first_week;x+)printf(t);if (x%7=0) printf (n);for (k=1;k=day_of_monthmonth-1;k+)printf(%dt,k);if (x%7=0) printf (n);x+;printf(n);void main ()int choice,year,month,day,flag=1,option;char c , k,ch;while(1)printf(=欢迎来到XXX的万年历=n);printf(请选择:n);
9、printf(* * * * * * * * 1.查找某一年的年历 * * * * * * * *n);printf(* * * * * * * * 2.查找某一月的月历 * * * * * * * *n);printf(* * * * * * * * 0.退出 * * * * * * * *n);printf(=n);printf(请输入您的选择: );scanf(%d,&option);switch(option)case 1:while(1)print_year(year);cls_screen();printf(do you want to continue?(Y/N);fflush(
10、stdin);scanf(%c,&ch);if(ch=N|ch=n)break;break;case 2:while(1)print_year_month ();cls_screen();printf(do you want to continue?(Y/N);fflush(stdin);scanf(%c,&ch);if(ch=N|ch=n)break;break;case 0:break;:程序的运行环境本程序运行环境为四主要运行界面的介绍 选择“1”并查询2012年的日历。显示2012年的日历:可以按任意键返回。出现“是否继续的提示语”按y可继续查询某年的日历。按n可返回开始时的画面,再继续选择。选择“2”,查询2012年
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风景名胜区自行车租借协议
- 建筑安装工程承包合作协议
- 广告委托制作协议书
- 民间借款协议书的格式要求
- 私车出租给机构协议
- 2024年加盟经销合同范本
- 建筑工程劳务扩大分包合同完整2024年
- 2024正规版私人借款合同样本
- 吉林省农业产品订购协议
- 房产物业抵押借款协议
- 牛津深圳版(广州沈阳通用)九年级英语上册 期中复习 Unit1-Unit4 词汇练习(无答案)
- 礼仪与教化下外国篇
- 景物描写作用及练习
- PPT模板:热烈欢迎兄弟单位领导莅临指导工作汇报课件
- 西游记詹纳尔英译本鉴赏
- 保险基础知识在线练习题库-1讲解
- 幼儿园小班绘本:《一步一步_走啊走》 PPT课件
- 高海拔地区电气设备选型
- 九田回米-练字格(excel版本)
- 售后服务控制程序文件
- 管道压力和壁厚对照表
评论
0/150
提交评论