您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计报告《万年历》
1《“万年历”》—C语言程序设计报告专业:计算机科学与技术班级:姓名:指导教师:年月日2目录1.设计的任务...........................................................................................32.对问题的分析理解...............................................................................33.采用的算法(流程图)........................................................................54.算法中涉及的知识点............................................................................65.设计用的计算机环境...........................................................................66结论........................................................................................................67.源代码...................................................................................................731.设计的任务1.1设计编写一个C程序—“万年历”。1.2输入任一年将显示出该年的所有月份日期,对应的星期。1.3下一行显示星期,从周日到周六,中英文都可以。1.4下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。1.5月份:中文英文都可以,注意闰年情况。2.对问题的分析理解2.1要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下:thecalendaroftheyear2008.JanuarySunMonTueWedThuFriSat12345678910111213141516171819202122232425262728293031FebruarySunMonTueWedThuFriSat41234567891011121314151617181920212223242526272829=============================================…………2.2判断是不是闰年(year%4!=0||year%100==0&&year%400!=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。2.3求出一年中的第一天是周几(year+(year-1)/4-(year-1)/100+(year-1)/400)%7。2.4有指针数组存放十二个月的英文和星期的英文缩写。2.5用FOR循环输出各月份的日历53.采用的算法(流程图)开始定义整型变year,i=0,j=0,a,n,m=1,k=0和函数judge定义一个指针变量**p定义两个字符型数组,month,week输入年份,yeara=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7i++,i4n=judge(year,i+1),p=month+i输出月份回车Nj++,j7输出星期回车k++,ka输出六个空格m++,m3输出占六个字节的天数(a+m)%7==0YYN输出回车n==2&&m==28YYn==3&&m==29break,退出本次循环break,退出本次循环n==4&&m==30break,退出本次循环Na=(a+m)%7回车输出”==============”结束NYYYY64.算法中涉及的知识点4.1定义整型,字符型,指针变量,字符型数组和指针数组。数组的初始化和引用和指针的使用。4.2函数的定义、声名、调用以及函数的返回值。4.3程序的三种基本结构:顺序,选择,循环。if语句的嵌套,for语句的嵌套。4.5赋值语句的使用。4.6输入(scanf)输出(printf)函数的应用。4.7算术运算符、关系运算符和逻辑运算符的应用。5.设计用的计算机环境WindowsXP,Turboc2.0和MicrosoftVisualC++6.06.结论6.1经过运行和调试得到了想要的结果—“万年历”,任意输入一个年份能按当初设计的格式输出每个月份的日历。6.2对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,7把一些细节的地方补上,就这样一个貌似很难的程序就写出来了(其实编程并不难,关键是要投入,要钻到里面去)。下一步就是读程序了,读程序时一定要小心仔细,一条语句一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为至。7.源代码#includestdio.hintjudge(intyear,intmonth)/*定义一个函数,把月分为四类(28,29,30,31)*/{if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)return(1);/*31天的月份,返回值为1*/elseif(month==2){if(year%4!=0||year%100==0&&year%400!=0)return(2);/*平年的2月份,返回值为2*/elsereturn(3);/*闰年的2月份,返回值为3*/}elsereturn(4);/*30天的月份,返回值为4*/}main(){intyear,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,November,December};clrscr();printf(pleaseintertheyear:);8scanf(%d,&year);printf(\n);printf(thecalendaroftheyear%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(%s\n,*p);printf(\n);for(j=0;j7;j++){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;elseif(n==2&&m==28)break;elseif(n==3&&m==29)break;elseif(n==4&&m==30)break;}a=(a+m)%7;/*计算出下个月的第一天是星期几*/printf(\n);printf(============================================);9printf(\n);getch();}}参考书目:谭浩强.《C程序设计》.清华大学出版社.北京清华大学学研大厦A座.2007年.
本文标题:C语言程序设计报告《万年历》
链接地址:https://www.777doc.com/doc-4973840 .html