- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C课程设计-1
实训一 万年历
1.1 系统概要
系统实现万年历的功能,并以交互的方式显示。适用于从公元一年1 月1日至公元一万年之间所有日期的显示。在屏幕上任意输入一年、月,都会显示出一个二维数组,以显示该月所有天数以及每天所对应的星期值;在屏幕上任意输入一年、月、日,都会显示出该天是星期几。
1.2 基本功能要求
(1) 系统主界面
(2) 查询某年某月某日(阳历)是星期几
(3) 是否是闰年
(4) 查询某月的最大天数
(5) 打印某年的全年日历或某年某月的月历
选做功能:可探讨具有阴历功能的万年历。
1.3 主要知识点
(1) 使用控制语句,判断闰年,某年某月某日是星期几;
(2) 定义一个指针数组,使各元素指向”Sunday”到”Saturday”的字符串
1.4 系统设计思路与算法
(1) 判断某年是否是闰年:
有两种可能:
1)能为4整除,且不能为100整除
2)能为400整除
可通过(year%4 == 0 year%100 != 0)||(year%400 == 0)实现条件判断
(2) 求某年某月某日是星期几
1)先求年的代码
首先约定一些法则,用Y表示年,用数字0-6分别表示星期日-星期六。
公式如下
A=(5+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7
2)计算当天是全年的第多少天。
考虑平年,由于对阳历来说一年的每个月的天数是一定的,为31,28,31,30,31,30,31,31,30,31,30,31。闰年时,三月以前和平年一样对待,如果在三月以后,在平年的基础上加一天。这样,可通过公式:
(5+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400+sum)%7
计算出当天是星期几了(sum是每年的第多少天)。
实训二 双向链表功能应用
2.1 系统概要
在掌握单项链表基本操作的基础上,掌握双项链表的结构、基本操作方法和规则。系统提供一个简单的操作界面,根据键盘输入的不同选项选择相关的操作过程,从而实现双向链表的建立、插入、删除、遍历、输出等操作。
2.2 基本功能要求
双向链表功能主要包括:建立、插入、删除、遍历、输出结点,求取结点个数,链表合并,排序等功能。具体情况如下:
1.提供系统操作界面
2.在链表头部、尾部或中部插入一个结点
3.从链表头部、尾部或中部删除一个结点
4.从链表头或尾部开始输出链表
5.求取链表中结点的个数
以下两种功能供选做
1.链表结点按要求排序
2.合并两个链表
2.3主要知识点
1.基本概念
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。链表根据需要开辟内存单元。图1表示最简单的一种链表的结构。
head 1249 1356 1475 1021
图1.1 链表结构示意图
链表有一个“头指针”变量,图中以head表示,它存放一个地址,该地址指向第一个元素。链表中每一个元素称为“结点”,每个结点都应包括两部分:一为用户需要用的实际数据,二为下一个结点的地址。可以看出,head指向第一个元素;第一个元素又指向第二个元素……直到最后一个元素,该元素不再指向其他元素,它称为“表尾”,它的地址部分放一个“NULL”,链表到此结束。
处理动态链表所需的函数
1) malloc函数
其函数原型为 void *malloc( unsigned int size);
其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是一个指向分配域起始地址的指针(基类型为void)。如果此函数未能成功地执行,则返回空指针(NULL)。
2)calloc 函数
其函数原型为 void *calloc (unsigned n, unsigned size);
其作用是在内存的动态区存储中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如果分配成功,返回NULL。
用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。
3)free 函数
其函数原型为 void free (void *p);
其作用是释放由p指向的内存区,使这部分内存区能被其他变量使用。P是最近一次调用calloc或malloc函数使返回的值。Free函数无返回值。
2.建立动态链表
所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。
建立单向链表的函数如下:
#defi
文档评论(0)