C语言课程设计打印月历.docx

上传人:b****3 文档编号:3708255 上传时间:2023-05-06 格式:DOCX 页数:10 大小:80.01KB
下载 相关 举报
C语言课程设计打印月历.docx_第1页
第1页 / 共10页
C语言课程设计打印月历.docx_第2页
第2页 / 共10页
C语言课程设计打印月历.docx_第3页
第3页 / 共10页
C语言课程设计打印月历.docx_第4页
第4页 / 共10页
C语言课程设计打印月历.docx_第5页
第5页 / 共10页
C语言课程设计打印月历.docx_第6页
第6页 / 共10页
C语言课程设计打印月历.docx_第7页
第7页 / 共10页
C语言课程设计打印月历.docx_第8页
第8页 / 共10页
C语言课程设计打印月历.docx_第9页
第9页 / 共10页
C语言课程设计打印月历.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计打印月历.docx

《C语言课程设计打印月历.docx》由会员分享,可在线阅读,更多相关《C语言课程设计打印月历.docx(10页珍藏版)》请在冰点文库上搜索。

C语言课程设计打印月历.docx

C语言课程设计打印月历

《打印月历》

课程设计报告

 

题目

打印月历

学号

姓名

年级专业

指导教师

完成日期

 

1实验目的

2实验内容

3源程序

4测试数据

5分析评价

6实验心得

 

一、实验目的

1)在教师指导下,学生根据选定的课题,综合运用所学程序设计的知识,完成问题分析、模块设计、代码编写、程序调试和运行等训练任务。

2)通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格,培养在软件开发中相互合作的团队意识。

二、实验内容

打印月历

1)年份和月份由键盘输入,打印的月历按星期一到星期日排列;

2)注意大小月、闰年等问题。

三、源程序

#include

#include

#include

#include

intdays[6][7];

intmdays[]={31,28,31,30,31,30,31,31,30,31,30,31};

intmdays2[]={31,29,31,30,31,30,31,31,30,31,30,31};

#defineis_leap_year(y)((!

((y)%4)&&((y)%100))||(!

((y)%400)))

#definemax_mdays(m,y)(is_leap_year(y)?

mdays2[m]:

mdays[m])

intdiff_days(inty1,intm1,intd1,inty2,intm2,intd2)

{

intd=0;

intmd=max_mdays(m1,y1);

while((y1!

=y2)||(m1!

=m2)||(d1!

=d2))

{

d++;

d1++;

if(d1>md)

{

d1=1;

m1++;

if(m1>=12)

{

m1=0;

y1++;

}

md=max_mdays(m1,y1);

}

}

returnd;

}

intget_wday(inty,intm,intd)

{

structtmtm;

time_tt;

intcy,cm,cd,cw;

intdd,w,f=0;

time(&t);

tm=*localtime(&t);

cy=tm.tm_year+1900;

cm=tm.tm_mon;

cd=tm.tm_mday;

cw=tm.tm_wday;

if(cy

{

dd=diff_days(cy,cm,cd,y,m,d);

f=1;

}

elseif(cy>y)

{

dd=diff_days(y,m,d,cy,cm,cd);

}

else

{

if(cm

{

dd=diff_days(cy,cm,cd,y,m,d);

f=1;

}

elseif(cm>m)

{

dd=diff_days(y,m,d,cy,cm,cd);

}

else

{

if(cd

{

dd=diff_days(cy,cm,cd,y,m,d);

f=1;

}

elseif(cd>d)

{

dd=diff_days(y,m,d,cy,cm,cd);

}

else

{

dd=0;

}

}

}

d=d+1;

w=f?

(cw+(dd%7)):

(cw-(dd%7));

if(w<0)

{

w+=7;

}

w=f?

(w+((d-1)%7)):

(w-((d-1)%7));

if(w<0)

{

w+=7;

}

returnw;

}

intmain()

{

intyear,mon,day;

inti,j,d,w,md;

printf("pleaseinputthedate:

");

scanf("%d%d%d",&year,&mon,&day);

if(((mon<1)||(mon>12))

||((day<0)||(day>mdays[mon-1])))

{

printf("error!

[1<=mon<=12][1<=day<=31]\n");

return-1;

}

w=get_wday(year,mon-1,day);

md=max_mdays(mon-1,year);

d=1;

while(d<=md)

{

i=w/7;

j=w%7;

days[i][j]=d++;

w++;

}

printf("\ndate:

%dyear%dmon%dday\n",year,mon,day);

printf("==========================================\n");

printf("%2s%2s%2s%2s%2s%2s%2s\n","MON","TUE","WED","THU","FRI","SAT","SUN");

for(i=0,d=0;i<6;i++)

{

for(j=0;j<7;j++)

{

if(days[i][j])

{

d++;

(d==day)?

printf("[%2d]",d):

printf("%2d",d);

}

else

{

printf("%-4s","");

}

}

printf("\n");

}

printf("============================================\n");

system("pause");

return0;

}

四、测试数据

任意输入一个日期

得到结果:

再次尝试输入一个闰年

例如2000年2月:

得到结果:

五、分析评价

流程图:

 

我在设计这个程序时采用了使用函数来实现各个打印月历的功能。

花了大约15个小时的时间,其中大部分时间用于构思、输入程序、调试和写实验报告。

遇到的主要困难是:

开始时由于构思不完善,导致程序很乱,等搞清楚主函数和子函数的关系后,程序变得简洁了。

下面对程序分模块进行优缺点的评价,以及提出了改进方案。

优点:

程序不仅在完成基本要求的基础上,还可以在凸显出具体的日期,即可以在程序中标出该天。

缺点:

程序的代码过于复杂,函数使用的少。

六、实验心得

1)我复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握;

2)利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿自主设计相结合的方法,锻炼了我综合分析解决实际问题的编程能力;

3)培养我在项目开发中的团队合作精神、创新意识及实战能力。

 

物理与电子信息学院课程设计评定意见

指导教师评语

主要内容包括:

设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。

成绩:

签名:

年 月 日

注:

本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2