C语言课程设计打印月历.docx
《C语言课程设计打印月历.docx》由会员分享,可在线阅读,更多相关《C语言课程设计打印月历.docx(9页珍藏版)》请在冰豆网上搜索。
C语言课程设计打印月历
《c语言程序设计》
课程设计报告
题目
打印月历
学号
姓名
年级专业
09电子信息工程2班
指导教师
完成日期
2010
年
6
月
28
日
一:
.目的要求
综合运用所学程序设计的知识,完成问题分析、模块设计、代码编写、程序调试和运行等训练任务。
通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格,培养在软件开发中相互合作的团队意识。
二:
问题描述
打印月历,用C语言将月历打印于屏幕上。
如下所示:
Welcometousethisprogram
***********************************************
20106
MONTUEWEDTHUFRISATSUN
123456
78910111213
14151617181920
21222324252627
282930
***********************************************
Wouldyouliketocontinue(y/n)?
三:
基本要求
1)年份和月份由键盘输入,打印的月历按星期一到星期日排列;
2)注意大小月、闰年等问题。
四:
源程序
#include
main()
{
voidprint_head(intx,inty);//函数声明//
voidprint_month(intx,inty);
intleap(intx,inty);
inti,days,year,month,firstday;
charchoose;
do
{printf("\n\npleaseinputtheyear(00000~32767):
\n\n");
scanf("%d",&year);
if(year<0||year>32767)
printf("WANNING:
ERROR,pleaseinputagain!
");}
while(year<0||year>32767);
//不可查询00000~32767之外的年份//
printf("\n\n");
do
{printf("pleaseinputthemonth(0~12)\n\n\n");
scanf("%d",&month);
if(month<=0||month>12)
printf("WANNING:
ERROR,pleaseinputagain!
");}
//不可以查询超过12的月份//
while(month<=0||month>12);
printf("\n\n");
days=days_of_month(year,month);
//调用days_of_month(year,month)函数//
firstday=leap(year,month);
//调用leap(year,month)函数//
print_head(year,month);
//调用print_head(year,month)函数//
print_month(firstday,days);
//调用print_month(firstday,days)函数//
choose=getchar();
printf("\n\n\n");
printf("wouldyouliketocontinue(y/n):
\n\n");
//是否继续查询?
//
scanf("%c",&choose);
if(choose=='y'||choose=='Y')main();
}
days_of_month(intx,inty)
{
intz;
switch(y)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
z=31;break;
//每年1、3、5、7、8、10、12月31天//
case4:
case6:
//每年4、6、9、11月30天//
case9:
case11:
z=30;break;
case2:
{if((x%4==0&&x%100!
=0)||(x%400==0))z=29;
//闰年2月29天//
elsez=28;break;
//平年2月28天//
}
}
returnz;
}
leap(intx,inty)
{
intz,i,moday;
z=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;
//判断某月一号星期几//
for(i=1;i{moday=days_of_month(x,i);
z=(z+moday)%7;
}
returnz;
}
voidprint_head(intx,inty)//打印图形界面//
{
printf("\t\t\t\tWelcometousethisprogram\n");
printf("\n\n********************************************************************************\n\n");
printf("\t\t\t\t%d%d\n\n",x,y);
printf("\t\t\tMONTUEWEDTHUFRISATSUN\n");
printf("\t\t\t");
}
voidprint_month(intx,inty)//生成月历//
{
inti;
charspace[7]={''};
for(i=1;i<=x-1;i++)
printf("%4c",space[i]);
for(i=1;i<=y;i++)
{if((i+x-1)%7==1)printf("\n\t\t\t%4d",i);
elseprintf("%4d",i);}
printf("\n\n********************************************************************************\n\n");
}
五:
程序流程图
六:
程序与结果图样
1.程序调试图样
2.结果图样
七:
小结
在这次C语言程序设计中,我学到了很多的东西,首先对于C语言中的循环的使用跟家娴熟,其中利用for循环可以使程序更加的简洁,对函数的调用的理解更加深刻。
当然,在程序调试中也有很多问题,但通过查询资料与询问同学,都很好的解决了,更加深刻的理解了课本所学知识。
参考书目:
1、谭浩强C语言程序设计
2、C高级使用程序设计
程序设计报告到此结束
指导教师评语
主要内容包括:
设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。