《C语言程序设计报告《万年历》.docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告《万年历》.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、“万年历”C 语言程序设计报告专业:计算机科学与技术班级:姓名:指导教师:年月 日1名目1. 设计的任务32. 对问题的分析理解33. 承受的算法流程图54. 算法中涉及的学问点65. 设计用的计算机环境66结论67源代码721. 设计的任务1.1 设计编写一个 C 程序“万年历”。1.2 输入任一年将显示出该年的全部月份日期,对应的星期。1.3 下一行显示星期,从周日到周六,中英文都可以。1.4 下一行开头显示日期从 1 号开头,并按其是周几实际状况与上面的星期数垂直对齐。1.5 月份:中文英文都可以,留意闰年状况。2. 对问题的分析理解2.1 要输入任一年显示出该年的全部月份日期,应领先设
2、计具体的输出格式, 如下:the calendar of the year2023.JanuarySunMonTue1Wed2Thu3Fri4Sat5678910111213141516171819202122232425262728293031FebruarySunMonTueWedThuFriSat31234567891011121314151617181920212223242526272829=2.2 推断是不是闰年 (year%4!=0|year%100=0&year%400!=0)满足条件就是平年,把一年中的全部月份分为四类28,29,30,31。2.3 求出一年中的第一天是周几
3、(year +(year-1)/4-(year-1)/100+(year-1)/400)%7。2.4 有指针数组存放十二个月的英文和星期的英文缩写。2.5 用FOR循环输出各月份的日历43. 承受的算法流程图开头定义整型变 year,i=0,j=0,a,n,m=1,k=0 和函数 judge(a+m)%7=0定义一个指针变量*p定义两个字符型数组,month,weekY输出回车Yn=2&m=28输入年份,yearYbreak,退出本次循环a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7Ni+,i4Yn=judge(year,i+1),p=month
4、+in=3&m=29Ybreak,退出本次循环输出月份回车n=4&m=30j+,j7 Y输出星期回车YNbreak,退出本次循环a=(a+m)%7 回车k+,kaNY输出六个空格输出”=”m+,m3N完毕输出占六个字节的天数54. 算法中涉及的学问点4.1 定义整型,字符型,指针变量,字符型数组和指针数组。数组的初始化和引用和指针的使用。4.2 函数的定义、声名、调用以及函数的返回值。4.3 程序的三种根本构造:挨次,选择,循环。if 语句的嵌套,for 语句的嵌套。4.5 赋值语句的使用。4.6 输入(scanf)输出(printf)函数的应用。4.7 算术运算符、关系运算符和规律运算符的应
5、用。5. 设计用的计算机环境WindowsXP,Turboc2.0和 Microsoft Visual C+ 6.06. 结论6.1 经过运行和调试得到了想要的结果“万年历”,任意输入一个年份能按当时设计的格式输出每个月份的日历。6.2 对 C 语言在编写程序时的用处有了更明确的生疏,懂得了编写 C 程序的一般法方步骤。最大的收获是,编写程序时确定要有信念和士气,要信任自己确定可以把这个程序编写出来。分析问题做出算法,想好思路,在心里有个大致的框架, 然后按部就班的登记自己想到的每一点内容,把写下的东西认真整理,查缺补漏, 把一些细节的地方补上,就这样一个貌似很难的程序就写出来了其实编程并不6
6、难,关键是要投入,要钻到里面去。下一步就是读程序了,读程序时确定要留神认真,一条语句一条语句的读,看是否能输出自己想要输出的结果,假设觉察错误要马上改正来,再接着向下读,直到把程序调试的完善无缺为至。7. 源代码#include“stdio.h“int judge(int year,int month)/*定义一个函数,把月分为四类(28,29,30,31)*/if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) return(1);/*31天的月份,返回值为1*/else if(month=2)if(year%4!=0|y
7、ear%100=0&year%400!=0) return(2);/*平年的2月份,返回值为2*/else return(3);/*闰年的2月份,返回值为3*/else return(4);/*30天的月份,返回值为4*/mainint year,i,j,a,n,m,k; char * p;char * week=“Sun“,“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“;char*month=“January“,“February“,“March“,“April“,“May“,“June“,“July“,“August“,“September“,“October“,“
8、November“,“December“; clrscr;printf(“please inter the year:“); scanf(“%d“,&year);7printf(“n“);printf(“the calendar of the year%d.“,year); printf(“n“);a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7; for(i=0;i12;i+)/*输出前几个月的日历表*/n=judge(year,i+1); p=month+i; printf(“%sn“,*p);printf(“n“); for(j=0;j7;j
9、+)p=week+j; printf(“%6s“,*p);printf(“n“); for(k=0;ka;k+)printf(“);/*六个空格*/for(m=1;m32;m+)printf(“%6d“,m); if(a+m)%7=0)printf(“n“);/*输出七个字符(空格和数字)换行*/if(n=1&m=31) break;else if(n=2&m=28) break; else if(n=3&m=29) break; else if(n=4&m=30) break;a=(a+m)%7;/*计算出下个月的第一天是星期几*/ printf(“n“);printf(“=“);printf(“n“);8getch;参考书目: 谭浩强.C程序设计.清华大学出版社.北京清华大学学研大厦A座.2023年.9