课程设计题目:万年历
实验题目:万年历程序的编写 实验目的:综合运用所学的C语言知识解决一个比较实际的简单问题,侧
重对数组、函数、指针、结构体和文件等相关内容的综合应用,使同学们能进一步熟悉掌握C语言的基本语法,进一步提升自己的编程能力并逐步培养编程思维,进而不断提高同学们解决问题的能力,并为以后的语言学习打下良好的基础。
实验要求:万年历设计
主要功能包括:
1、查询某年某月每一天对应星期几。
2、可以查询某年某月的上个月或是下个月的日历情况。
3、查询某年某月某日是这一年的第几天,并查询改天
是星期几。
4、判断该年是闰年还是平年,判断这一年的生肖。
实现思路(要求有文字描述,并画出流程图):开始 定义S=0;c=0 输入y,m,d Y是闰年 是 判断平闰Y%4==0且y0!=0)或 Y@0==0 Y是平年 (计算是该年的第几天=s; 按与几点相隔天数除7推星期几及y,m,d是今年的s天 排出该月的日历及推算下月的日历 计算是该年的第几天=s; y,m,d是今年的s天 该天使星期几及该月和上下月的情况 输出该年是平年还是闰年,生肖;改日是该年的第几天,星期几及该月日历及上下月日历 结束 实现过程(要求有文字说明实现的过程,并对相应的代码添加注释):见程序(程序见后)后的解析。。。运行时只要你输入年月日,
你要的星系都会显示出来;如果想继续输入日期的话,只需按y就可以,祥结束按n就可以结束。 实验总结(分析程序的得与失): 得: 通过这次程序设计,更使我了解了编程序的严谨性,每个问题,
每个不走都得有依据,不得盲目乱造,同时也让我获得了一点编写简单程序的能力,使自己平时在理论课中很多部明白的东西明白了好多,学会了好多语句的用法,比如会用‘y’ or‘ n’来决定程序是否要继续;怎么控制输出格式等等。总之在这次程序设计中我学到了很多。
失:在编程序过程中有些函数的用法不怎么会用,偶尔会落下写简单
的东西。如‘ ,’‘ ;’等;同时在编写输出上下个情况及判断程序是否要继续的程序上花费了好多时间;函数的声明、调用既然不清楚,感到很惭愧。实验的过失就是成功的阶梯,在过失中我也学到很多。
心得体会:我体会到了编程序的严谨性,也觉得如果我们要是熟悉课本所
讲的内容,不怕麻烦,坚持不懈,我们一定可以将它实现的。要有耐心,有时候很多的错误就是一个地方引起的,只要认真检查,一定能突破的,所以在以后的编程序是要细心,有耐心,人不断调试程序,直至最后成功。
#include<>
struct 询某年某月某天对应星期几;\\n\\t2.查询某年某月上下个月情况;\\n\\t3.显示该日子是该年的第几天,并查询改天星期几;\\n\\t4.判断该年是平年还是闰年以及生肖等。\\n\
printf(\请输
入年月日:\
scanf(\是否还要继续输入日期 getchar(); z=getchar();
if(z=='y'||z=='Y') //判断是 rili(); // 调用函数 if(z=='n'||z=='N') // 判断不是结束 getchar(); return 0; }
void print(int year,int month) //print函数的定义 {
int i,j,n,leap,days,k,count;
leap=dobb(year); //函数调用及赋值 days=date1(year,month-1,1); //printf(\年\\n\
for(i=month-1;i<=month+1;i++) //输出上下月的情况 {if(i<1) printf(\月份\\n\上年的12月 if(i>12) printf(\月份\\n\下年的1月 if(i>0&&i<13) printf(\月份\\n\本年的月份 printf(\ printf(\
printf(\日\一\二\三\四\五\六\输出格式
if(days==7) //控制输出的个数 {
days=0; }
else n=days; printf(\
for(j=1;j<=8*days;j++) //控制输出的日期对齐 printf(\ switch(i) {
case 0: case 1: case 3: case 5: case 7: case 8: case 10:
case 12:count=31;break; case 4: case 6: case 9:
case 11:count=30;break;
case 2:if(leap)count=29; //2月不同情况的判断 else count=28; break; }
for(k=1;k<=count;k++) // 逐渐输出每月的日期 {
printf(\ n++; if(n==7)
{printf(\ }printf(\ days=n; } }
int dobb(int year) //判断年份的类型函数的定义 {
if%4==0&&0!=0||@0==0)) return(1); //闰年输出1 else return(0); //平年输出0 }
int date1(int year,int month,int day) //date1函数的定义 {int leap,cn=0,sum;
leap=dobb(year); // 调用函数 switch(month-1) {
case 11: cn+=30; case 10: cn+=31; case 9: cn+=30; case 8: cn+=31; case 7: cn+=31; case 6: cn+=30; case 5: cn+=31; case 4: cn+=30;
C语言课程设计报告-万年历



