C语言课程设计报告-万年历1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目:万年历
实验题目:万年历程序的编写
实验目的:综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体和文件等相关内容的综合应用,
使同学们能进一步熟悉掌握C语言的基本语法,进一步提升自
己的编程能力并逐步培养编程思维,进而不断提高同学们解决问
题的能力,并为以后的语言学习打下良好的基础。
实验要求:万年历设计
主要功能包括:
1、查询某年某月每一天对应星期几。
2、可以查询某年某月的上个月或是下个月的日历情况。
3、查询某年某月某日是这一年的第几天,并查询改天
是星期几。
4、判断该年是闰年还是平年,判断这一年的生肖。
实现思路(要求有文字描述,并画出流程图):
实现过程(要求有文字说明实现的过程,并对相应的代码添加注释):见程序(程序见后)后的解析。。。运行时只要你输入年月日,你要的星系都会显示出来;如果想继续输入日期的话,只需按y就可以,祥结束按n就可以结束。
实验总结(分析程序的得与失):
得:通过这次程序设计,更使我了解了编程序的严谨性,每个问题,每个不走都得有依据,不得盲目乱造,同时也让我获得了一点
编写简单程序的能力,使自己平时在理论课中很多部明白的东
西明白了好多,学会了好多语句的用法,比如会用‘y’ or‘ n’
来决定程序是否要继续;怎么控制输出格式等等。总之在这次
程序设计中我学到了很多。
失:在编程序过程中有些函数的用法不怎么会用,偶尔会落下写简单的东西。如‘,’‘;’等;同时在编写输出上下个情况及判断
程序是否要继续的程序上花费了好多时间;函数的声明、调用
既然不清楚,感到很惭愧。实验的过失就是成功的阶梯,在过
失中我也学到很多。
心得体会:我体会到了编程序的严谨性,也觉得如果我们要是熟悉课本所讲的内容,不怕麻烦,坚持不懈,我们一定可以将它实现的。
要有耐心,有时候很多的错误就是一个地方引起的,只要认真
检查,一定能突破的,所以在以后的编程序是要细心,有耐心,
人不断调试程序,直至最后成功。
#include
struct //定义包含年月日数组结构体
{int year;
int month;
int day;
}date;
int main() //主函数
{
void print(int,int); //函数的声明
int dobb(int); //函数的声明
int date1(int,int,int); //函数的声明
int rili(); //函数的声明
rili(); //函数的调用
return 0;
}
int rili() //定义函数
{
int days; //定义整型变量
int a,b; //定义整型变量
char z; // 定义字符变量
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"); // 输出头的格式
printf(" 万年历\n\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("功能有:\n"); printf("\t");
printf("1.查询某年某月某天对应星期几;\n\t2.查询某年某月上下个月情况;\n\t3.显示该日子是该年的第几天,并查询改天星期几;\n\t4.判断该年是平年还是闰年以及生肖等。\n"); printf("&&&&&&&&&+++++++++++++++++++++++++++++++++++&&&&&&&&&\n");pr intf("请输入年月日:");
scanf("%d,%d,%d",&date.year,&date.month,&date.day); // 输入年月日
switch(date.month) //计算第几天的
{case 1: days=date.day; break;
case 2: days=date.day+31; break;
case 3: days=date.day+59; break;
case 4: days=date.day+90; break;
case 5: days=date.day+120; break;
case 6: days=date.day+151; break;
case 7: days=date.day+181; break;
case 8: days=date.day+212; break;
case 9: days=date.day+243; break;
case 10: days=date.day+273; break;
case 11: days=date.day+304; break;
case 12: days=date.day+334; break;
}
if(((date.year%4==0&&date.year%100!=0)||date.year%400==0)&&date.month>=3) days++; printf("%d月%d日是%d的第%d天。\n",date.month,date.day,date.year,days);
if((date.year%4==0&&date.year%100!=0)||date.year%400==0) // 判断平闰年的语句printf("%d 是闰年。\n",date.year); //输出平闰年的
else
printf("%d 是平年。\n",date.year);
if(date.year>=2013) //判断2013年后生肖的语句
{a=(date.year-2013)%12;
switch(a)
{case 0: printf("%d 是蛇年。\n",date.year); break;
case 1: printf("%d 是马年。\n",date.year); break;
case 2: printf("%d 是羊年。\n",date.year); break;
case 3: printf("%d 是猴年。\n",date.year); break;
case 4: printf("%d 是鸡年。\n",date.year); break;
case 5: printf("%d 是狗年。\n",date.year); break;
case 6: printf("%d 是猪年。\n",date.year); break;
case 7: printf("%d 是鼠年。\n",date.year); break;
case 8: printf("%d 是牛年。\n",date.year); break;
case 9: printf("%d 是虎年。\n",date.year); break;
case 10: printf("%d 是兔年。\n",date.year); break;
case 11: printf("%d 是龙年。\n",date.year); break;
}
}
else b=(2013-date.year)%12;
switch(b) // 判断2013年前生肖的语句{case 0: printf("%d 是蛇年。\n",date.year); break;
case 1: printf("%d 是龙年。\n",date.year); break;
case 2: printf("%d 是兔年。\n",date.year); break;
case 3: printf("%d 是虎年。\n",date.year); break;
case 4: printf("%d 是牛年。\n",date.year); break;
case 5: printf("%d 是鼠年。\n",date.year); break;
case 6: printf("%d 是猪年。\n",date.year); break;
case 7: printf("%d 是狗年。\n",date.year); break;
case 8: printf("%d 是鸡年。\n",date.year); break;
case 9: printf("%d 是猴年。\n",date.year); break;
case 10: printf("%d 是羊年。\n",date.year); break;
case 11: printf("%d 是马年。\n",date.year); break;
}
dobb( date.year); //调用函数
date1( date.year, date.month,date.day); //调用函数
print(date.year,date.month); //调用函数
printf("continue>>>>>>>>>>>>>>>>>>Y/N.."); //是否还要继续输入日期getchar();