logo资料库

C语言课程设计《打印月历》.doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
《C 语言课程设计》 课程设计报告 题 目 学 号 姓 名 年级专业 指导教师 《打印月历》 110803113 朱道路 2011 级通信工程 蔡继盛 完成日期 2012 年 6 月 8 日 安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal University
一、问题描述及基本要求: 1)年份和月份由键盘输入,打印的月历按星期一到星期日排 列; 2)注意大小月,闰年等问题。 二、程序分析和具体设计 设计难点: 1.程序难点在于判断每月的第一日为星期几,但根据蔡勒公式,可 以很容易地有年月日推断出星 1)s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400- 40+c; 2)return ((int)s%7); 3)year:要查询的年份; 4)s:从该年的一月一日起到该天的天数; 5)s%7:得出的星期数,s%7==0 表示星期天; 在打印月历时,只要知道第一天的星期,就可以依次输入后面的 日期,通过定长度输出日期,在遇到某天时星期六时,就换行输出, 因此可以按照月历的格式输出;
2.闰年的判断,能被 4 整除但不能被 100 整除,或者能被 400 整 除的年份为闰年,否则为平年;大小月的判断,闰年的第二月为 29 天,平年的第二月为 30 天; 3.判断日期是否合法,可以先判断年月日是否有小于 0 的值,月 和日是否有超出最大值 12 和 31 ,如果通过此判断合法,再判断是 否时闰年,如果时闰年,则判断二月份是否满足要求,闰年二月份不 能超过 29 天,平年二月份不能超过 28 天。在查询过程中,如果发现 输入不合法或者不满足输入要求,则要求重新输入。 设计思路 1)第一步:判断输入是否合法;int dayExame(int year,int month,int day) 2)第二步:判断是否为闰年;int IsLeapYear(int year) 3)第三步:判断二月份天数;int month_day(int year,int month) 4)第四步:计算每月第一天的星期;int DaySearch(int year,int month,int day) 5)第五步:按月历格式输出;int PrintYearmonth(int year,int month) 6)第六步:整合;void main() 三、结构图: 输入日期 月历显示 日期查询 闰年判断,按星 期排列
四、流程图 输入 int dayExmae 闰 年 判 断 是 否 为 year%4==0&&year%100!=0 )||(year%400==0 (计算每月 第一天的 星期)int DaySearch (判断二月的天数) Int month_day (按星期一道星期日排 列)int daysearch
按月历格 式输出 int PrintYearm onth 输出结果: 打印月历 五、程序清单: #include int dayExame(int year,int month,int day) { } if(year<0||month<1||month>12) return 0; else return 1; int LeapYear(int year)
{ if((year%4==0&&year%100!=0)||(year%400==0)) return 1; else return 0; } int month_day(int year,int month) { int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; if( LeapYear(year)&&month==2) return 29; else return(mon_day[month-1]); } int DaySearch(int year,int month,int day) { int c=0; float s; int m;
for(m=1;m
if(j%7==0) printf("\n"); } return 0; } void main() { } int year,month; printf("请输入年:"); scanf("%d",&year); printf("请输入月:"); scanf("%d",&month); printf("日历---朱道路&&吴琦隆制作\n"); printf("_____________________________________\n"); PrintYearmonth(year,month); 六、测试数据及程序运行结果
分享到:
收藏