C语言万年历程序的设计说明Word文档格式.docx
《C语言万年历程序的设计说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言万年历程序的设计说明Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
printf("
\n\n\n\n"
);
**********************************************************\n\n"
**\n"
欢迎进入万年历查询系统\n"
**\n\n"
**********************************************************\n\n\n"
1年历2月历3日历4退出\n"
请输入您的选择<
1~4>
按回车键确定:
"
scanf("
%d"
&
b);
switch(b)
case1:
\n请输入您要查的年份:
year);
a=x3(year,1,1);
if(a==0)
错误!
请您重新输入。
\n"
break;
}
nianli(year);
case2:
\n请输入您要查的年和月,年月之间用空格隔开:
%d%d"
year,&
month);
a=x3(year,month,1);
if(a==0)
yueli(year,month);
case3:
\n请输入您要查的年月日,年月日之间用空格隔开:
%d%d%d"
month,&
day);
a=x3(year,month,day);
rili(year,month,day);
case4:
exit(0);
default:
\n\n"
}
2.显示一年的日历,可通过函数voidx1()实现,
思路如下:
●先判断输入年份是否为闰年,若为闰年,则定义二月为29天,
通过调用函数判断是否为闰年及每个月的天数
●依次打印12个月的月份
●打印每个月的日历,显示个每个月的日历:
%2s%2s%2s%2s%2s%2s%2s\n"
"
星期日"
星期一"
星期二"
星期三"
星期四"
星期五"
星期六"
3.闰年的判断:
计算所输入的年份是否可被4整除,若不能被整除,为平年。
若可被4整除,计算此年份能否被100整除,不能被100整除则为闰年。
既能被4整除,也能被100整除的年份,若也能被400整除,则为闰年,否则为平年。
闰年366天,平年365天
图2-1
代码:
intrunnian(intyear)
if(year%4==0&
&
year%100!
=0||year%400==0)
return1;
else
return0;
4.判断某月的天数;
通过函数:
intday1(intyear,intmonth)
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
若为闰,则二月为29天。
图2-2
if(runnian(year))
a[1]=29;
第3章详细设计
#include<
stdio.h>
stdlib.h>
/*定义头文件*/
intrunnian(intyear)/*定义变量*/
{
if(year%4==0&
=0||year%400==0)/*利用函数判断输入年份是闰年还是平年*/
return1;
else
return0;
intday1(intyear,intmonth)
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
/*定义数组确定12个月每个月的天数*/
if(runnian(year))/*如果输入年份是闰年*/
a[1]=29;
/*二月29天*/
returna[month-1];
intday2(intyear,intmonth,intday)
inti,sum=0;
for(i=1;
i<
month;
i++)
sum+=day1(year,i);
sum+=day;
returnsum;
intweek1(intyear,intmonth,intday)
intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day2(year,month,day);
number%=7;
returnnumber;
char*Week2(intnumber)
switch(number)/*分类一周七天*/
{
case0:
return"
星期日"
;
case1:
return"
星期一"
case2:
return"
星期二"
case3:
return"
星期三"
case4:
return"
星期四"
case5:
return"
星期五"
case6:
return"
星期六"
default:
return"
"
/*不符和上面七种情况的报错提示*/
}
voidx1(intyear,intmonth,intday)
intnumber=week1(year,month,day);
if(runnian(year))printf("
闰年"
/*年份为闰年则输出“闰年“*/
elseprintf("
平年"
printf("
%d年%d月%d日%10s\n\n"
year,month,day,Week2(number));
/*按年月日输出结果*/
voidx2(intyear,intmonth)
intmax,number,i,j=1;
max=day1(year,month);
number=week1(year,month,1);
/*按照间隔打印日历
for(i=0;
number;
printf("
while(j<
=max)
%8d"
j);
if(i%7==6)
{
printf("
}
i++;
j++;
intx3(intyear,intmonth,intday)
if(year<
0||month<
1||month>
12||day<
1||day>
day1(year,month))/*当输入植出现这些情况时*/
/*返回0*/
/*返回1*/
voidnianli(intyear)
inti;
for(i=1;
=12;
if(runnian(year))printf("
elseprintf("
%d年%d月\n\n"
year,i);
voidyueli(intyear,intmonth)
if(runnian(year))
year,month);
x2(year,month);
voidrili(intyear,intmonth,intday)
x1(year,month,day);
voidmain()
intyear,month,day,a,b;
while
(1)
scanf("
switch(b)
/*选择1时*/
printf("
/*给出输入提示*/
scanf("
/*输入查询的年份*/
a=x3(year,1,1);
if(a==0)
{
printf("
/*输入植异常时报错*/
break;
}
nianli(year);
break;
/*选择二时*/
scanf("
/*输入需要查询的年月*/
a=x3(year,month,1);
if(a==0)
{
printf("
break;
}
yueli(year,month);
/*选择3时*/
scanf("
/*输入年月日*/
a=x3(year,month,day);
if(a==0)
{
printf("
break;
}
rili(year,month,day);
exit(0);
default:
printf("
}
第四章运行结果及分析
1.登陆界面
图4-1
登陆界面提供了四个选项进行选择,并提示输入后的操作方法;
2.显示某年全年日历
图4-2
输入指令后,依次打印出每个月份的日历。
并显示平年或者闰年;
3.显示某月日历
图4-3
第5章 课程设计心得
通过本次课程设计我第一次通过自己的实践对书本上的知识进行了与生活相关的运用。
在这个程序中,主要应用了这学期所学习的循环,条件语句,数组以及调用函数。
这些知识的应用使我对课本容的认识得到了加深。
在编写程序的过程中,也出现了很多错误。
比如程序语句错误导致检测时连续报错;
函数语句编写错误导致输出结果与实际不符等。
出现这些情况后,通过对一些新知识的学习和对网上相关资料的阅览,我发现了自己的程序的问题所在并进行了改正。
最后得到了正确的结果。
在程序的编写完成后,我按照要求对程序进行了拓展。
在输出年历的基础上增加了月历及确定日期的输出。
本来设想增加农历生肖功能,但是由于程序过于复杂,最终没能在规定时间调试成功。
参考文献
[1]文君,柳.C语言程序设计教程[M].清华大学.2010.3
[2]谭浩强.C语言程序设计教程[M].清华大学.2007.6
[3]《C语言程序设计》精品课程
[4]谭浩强.C程序设计教程.:
清华大学.2007.07
[5]海新燕主编.C语言程序设计实用教程.机械工业.2007.09
[6]泽中红艳主编.C语言程序设计.:
清华大学.2008.06
[7]路俊维马雪松主编.C语言程序设计.中国铁道工业.2009.06