用c语言编写万年历程序.docx
《用c语言编写万年历程序.docx》由会员分享,可在线阅读,更多相关《用c语言编写万年历程序.docx(7页珍藏版)》请在冰豆网上搜索。
用c语言编写万年历程序
序言
我们经过了一个学期的c语言课程的学习,对计算机变成所需的c语言有了大体的了解,能够看懂和编写一些简单的c语言程序,为了更好的加深同学们对c语言的认识,提升同学们的c语言时间编程能力,所以进行了c语言的课程设计。
本程序是一个万年历程序,可以在程序中任意的输入公元年份,通过程序的将该年份的各种信息形象直观的显示出来,达到c语言程序编写所体现的方便快捷的功效。
同时,通过对该程序c语言的编写,能够在训炼我们在课本中学到各种知识点,并将其应用其中。
设计题目:
1设计编写一个C程序—“万年历”。
2输入任一年将显示出该年的所有月份日期,对应的星期。
3下一行显示星期,从周日到周六,中英文都可以。
4下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。
5月份:
中文英文都可以,注意闰年情况。
问题定义(或系统分析):
1要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下:
thecalendaroftheyear2008.
January
SunMonTueWedThuFriSat
12345
6789101112
13141516171819
20212223242526
2728293031
February
SunMonTueWedThuFriSat
12
3456789
10111213141516
17181920212223
242526272829
=============================================
…………
2判断是不是闰年(year%4!
=0||year%100==0&&year%400!
=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。
3求出一年中的第一天是周几(year+(year-1)/4-(year-1)/100+(year-1)/400)%7。
4有指针数组存放十二个月的英文和星期的英文缩写。
5用FOR循环输出各月份的日历
总体设计与详细设计:
1.总体流程图
2.算法中涉及的知识点
1定义整型,字符型,指针变量,字符型数组和指针数组。
数组的初始化和引用和指针的使用。
2函数的定义、声名、调用以及函数的返回值。
3程序的三种基本结构:
顺序,选择,循环。
if语句的嵌套,for语句的嵌套。
4赋值语句的使用。
5输入(scanf)输出(printf)函数的应用。
6算术运算符、关系运算符和逻辑运算符的应用.
3.详细设计:
#include
intjudge(intyear,intmonth)
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return
(1);
elseif(month==2)
{
if(year%4!
=0||year%100==0&&year%400!
=0)
return
(2);
elsereturn(3);
}
elsereturn(4);
}
intmain()
{
intyear,i,j,a,n,m,k;
char**p;
char*week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
char*month[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
printf("pleaseintertheyear:
");
scanf("%d",&year);
printf("\n");
printf("thecalendaroftheyear%d.",year);
printf("\n");
a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;
for(i=0;i<12;i++)
{
n=judge(year,i+1);
p=month+i;
printf("%s\n",*p);
printf("\n");
for(j=0;j<7;j++)
{
p=week+j;
printf("%6s",*p);
}
printf("\n");
for(k=0;kprintf("");
for(m=1;m<32;m++)
{
printf("%6d",m);
if((a+m)%7==0)
printf("\n");
if(n==1&&m==31)break;
elseif(n==2&&m==28)break;
elseif(n==3&&m==29)break;
elseif(n==4&&m==30)break;
}
a=(a+m)%7;
printf("\n");
printf("============================================");
printf("\n");
}
}
调试与测试:
1.登陆界面
图4-1
登陆界面提供了四个选项进行选择,并提示输入后的操作方法;
2.显示某年全年日历
图4-2
输入指令后,依次打印出每个月份的日历。
并显示平年或者闰年;
3.显示某月日历
总结与心得:
1.C语言是目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。
然而,这些程序都千篇一律的局限在一个很短的时间范围内。
但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。
C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:
C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。
2.经过上一个学期对《C程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。
通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
3.通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!
4.在万年历的编写过程中也体会到了做事情一顶要细心、认真。
更加知道了要掌握好基础知识。
还有体会到了成功的感觉!
在万年历的设计过程中更加体会到了团队合作的重要性,知道了只有团队合作才会更好的完成设计!
也体会到以后在工作中团队合作的必要性和重要性!
5.通过本项课程设计也培养了我独立思考、综合运用所学有关相应知识的能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!
6.由于C语言是近年在国内外得到迅速推广应用的一种语言。
C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。
通过这次的c语言程序设计更加了解了c语言的好处和其可用性!
7.在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!
在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!
在设计过程中的一次次设计错误增加了我放弃的想法!
不过经过大家的努力终于完成了课程设计!
完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!
只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!
也让我懂得了要想成功首先就必须有很强的自信心!
懂得了自己以后要在做任何事情时都要自信!
通过本次课程设计我第一次通过自己的实践对书本上的知识进行了与生活相关的运用,使我受益匪浅,我将不断地学习c语言知识,不断完善自己,提升自己对c语言的理解力。