万年历C语言课程设计报告书.doc
文本预览下载声明
C语言课程设计报告书
设计人 :查波
学号 :201201466
院系 :电信学院
班级 :电气11203
指导老师 :杜红
一.设计要求
1.能够显示星期。
2.能够显示年月日。
二.设计目的
1.???通过本项课程设计,可以培养独立思考、?综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握?工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!?
??
2.???通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的
程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。
三.设计思想
1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
2 .输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。
要用到的函数和语句
1.stdio.h /*头文件*/
2.main() /*主函数*/
3.printf(),
4.scanf()
5.if 语句
6.for 语句
7. IsLeapYear(int) /*定义函数*/
流程图
输入的年份 判断从定义年到输入的年份中
每个年份是否为闰年
是 否
每年为366天 每年为365天 返回该年的天数
输入的年月 判断输入年是否为定义年
是 否 总天数=year_days 总天数为定义年前到输入年的总天数 求出定义年第一天星期几 判断输入的月份是否
为闰年中的月份
是 否 该月是否是二月
是 否 求该月的万年历依次执行 加1
求该月的万年 执行下步
历 总天数 判断总天数的最后一天为星期几 从这一天起依次输出输入月份的天数直到该月底为止
程序运行结果
六.源代码
#include stdio.h
int IsLeapYear(int);
main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0; //输入的年份之前的所有年的天数之和
int Year_Start = 1; //当前年份
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; //第n月的天数
printf(请输入年份: );
scanf(%d,year);
while(Year_Start year) //求输入的年份之前的所有年的天数之和
{
if( IsLeapYear( Year_Start ) ) //当前年份是闰年
Per_Year_Days = 366;
显示全部