欢迎来到天天文库
浏览记录
ID:40761835
大小:211.50 KB
页数:7页
时间:2019-08-07
《万年历的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Note第章万年历(TC2.0实现)自学视频、源程序:配套资源mr1在计算机普及的今天,万年历成为了人们日常生活和工作中经常用到的桌面实用工具,它方便人们查看日期,省去了翻阅日历的麻烦。万年历还可以根据用户输入的年月日准确快速地查出当天的信息,当输入到月时能够显示出该月的日历。通过本章的学习,读者能够学到以下内容::如何向主函数传递参数:怎样将传入的字符串转换成年月日:如何判断闰年:如何计算星期几·7·Note1.1万年历概述1.1.1功能概述实用工具万年历类似于家里的日历,方便办公人员翻看日历,查阅信息。
2、它的主要功能是根据用户输入的参数,显示相应的信息。例如,输入年月日具体日期,系统会输出该天是星期几;若输入的数据为年月,那么会输出该年该月的日历信息。1.1.2万年历效果预览图1.1传入年月日后的效果图实用工具万年历由多个模块组成,但是这些模块很多都是用于对项目的算法进行编写,没有太多对应这些模块的效果预览图。下面来看几个万年历中输入不同参数时显示的效果。当输入参数“1988/10/18”时,命令行中显示的效果如图1.1所示。当输入闰年的参数时,例如“2000/02/”,命令行中显示的效果如图1.2所示。当在命令
3、行中输入参数为“2011.05.”时,显示2011年5月的效果如图1.3所示。图1.2闰年2月的显示效果图1.3查看月的日历效果1.2关键技术1.2.1main()函数的参数在万年历实用工具中,运行程序时首先应该向主函数传递参数。主函数main()的形式参数如下:main(intargc,char*argv[])main()函数的两个内部形参argc和argv是用来接收命令行实参的,这是只有主函数main()才能具有的参数。·7·Note在该系统中主要需要满足以下功能:þargc参数argc参数保存命令行的参数个
4、数,是个整型变量。这个参数的值至少是1,因为程序名就是第一个实参。þargv参数argv参数是一个指向字符指针数组的指针,在这个数组中的每一个元素都指向命令行实参。所有命令行实参都是字符串,任何数字都必须要由程序转变成为适当的格式。在万年历实用工具中,main()函数的参数格式如下:main(intx,char**date)说明:此项关键技术中需要对命令行实参在程序中进行格式转换,格式转换部分将在传参模块中详细介绍。1.2.2闰年的判断方法闰年是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立
5、的,补上时间差的年份为闰年,闰年共有366天,在2月中加1天。判定闰年遵循的一般规律为4年一闰,100年不闰,400年再闰。在万年历实用工具中,采用C语言语句对闰年进行判定,代码如下:if((year%4==0&&year%100!=0)
6、
7、(year%100==0&&year%400==0))如果if语句中判定闰年的语句为真,则说明该年为闰年,然后执行相应的语句。1.3传参模块1.3.1模块概述在万年历项目中,通过使用main()函数的参数,将其程序的名称以及想要查询的年月日信息进行输入,运行程序,即可显示需要
8、的信息。在传递参数之前需要对程序进行编译链接,得到可执行文件后,向可执行文件中传递参数。1.3.2模块实现在实现传递参数时首先需要对程序进行编译链接,生成可执行文件,在命令行中输入该执行文件的路径名称,然后再输入传入的参数,由于所有的命令行实参都是字符串类型的,因此在程序中需要将字符串类型的实参转换成整型,以便于在程序中对整型数据进行计算等操作。相应代码如下:intyear=0,month=0,day=0,week;/*定义整型变量*/·7·Noteintd,i,dm,dy,m2;charWEEK[9];if(x
9、==1)/*判断命令行的传参个数*/{printf("ERROR!youforgottoenterthedateyouwanttoview");/*没有传参时,输出此提示语句*/exit(0);/*退出项目程序*/}i=0;d=-1;while(date[1][i])/*遍历传参,进行格式转换*/{if((date[1][i]=='/'
10、
11、date[1][i]=='.')&&d==-1){d=0;i++;continue;}if((date[1][i]=='/'
12、
13、date[1][i]=='.')&&d=
14、=0){d=1;i++;continue;}if(d==-1)year=year*10+(date[1][i]-'0');if(d==0)month=month*10+(date[1][i]-'0');if(d==1)day=day*10+(date[1][i]-'0');i++;}1.4计算星期差模块1.4.1模块概述在计算星期差模块中,主要以2000/01/01日为星
此文档下载收益归作者所有