2005年初赛试题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2005年初赛试题

电信系2004级编程PK大赛初赛试题 (共6题,可任选一题) 比赛要求: 统一使用标准C语言,编程平台VC、TC等等均可。 提交形式:可执行文件,源代码,算法及软件设计文档,使用帮助文档。 评分标准: 功能要求 文档 源码可读性 效率 性能 总分 20 20 20 20 20 100 题目1 多版本结点链表 前言: 链表是程序开发中使用比较频繁的一种数据结构。在实际应用中,链表都会有些变化,下面就要求实现一个链表,达到特定的要求。 该链表的结构如下图所示: 图1 该链表中的每个结点都可以指向两个结点,一个new_node结点和一个next_node,next_node和一般链表中的后继结点相同。 下面解释一下new_node。该链表要求,修改该链表结点的值的时候,保留该结点原始值不变,而是为该结点创建一个新版本结点,把新的值写入新版本结点中,最后建立结点之间的联系,包括新旧版本结点之间的联系和前后两个结点之间的联系。这个过程中创建的新版本结点,我们称为new_node。 这种链表的每个结点都存在多个版本,占据了几倍的空间,所以要求提供一种回收存储空间的操作,经过存储空间回收操作之后,每个结点只保留一个最新版本,其他版本占用的空间被回收。例如:上图中的链表经过空间回收之后如下图所示: 图2 要求: 实现一个前言中所介绍的多版本结点链表; 通过命令行操作链表,支持以下命令(可以自己实现更多的其他命令)。 add NUMBER //在链表末尾增加一个结点,值为数值NUMBER modify NODE NUMBER //修改第NODE个结点的值为数值NUMBER(按照前言中//的修改规则修改结点) shownode NODE //依次输出第NODE个结点的所有版本结点数值 showdata //输出所有结点的有效数据(最新版本结点数据) recycle //进行回收操作,只保留每个结点的最新版本数据 编程语言不限。 附:题目背景 某项目组为某公司开发了一款工业控制产品,该产品中使用NandFlash作为数据存储器。相对一般的数据存储介质,NandFlash具有比较特殊的硬件特性,因此对文件系统也有特殊的要求。 NandFlash的硬件特性:对NandFlash进行写操作只能把数据存储位由1变为0,不能由0变为1;对NandFlash进行擦除操作,可以把所有存储位变为1。NandFlash按页和块的方式组织,每页512字节,每块32页,读操作和写操作可以对页进行操作,擦除操作只能对块进行操作。 正因为以上硬件特性,如果要修改数据,不能按照先擦除数据,再写入新数据的步骤进行操作。一般每次要求修改的数据量是很少的,可能只有几十字节,但是如果要进行擦除操作,一次只能擦除1块(32页,16K字节)。这样将极大的降低NandFlash的寿命(NandFlash的擦写次数有限),同时效率也很低。 为解决以上问题,我们对数据页按多版本结点链表的方式管理,一般情况下不进行擦除操作,当必须进行擦除操作的时候再擦除 (如果想进一步了解该文件系统,请首先实现多版本结点链表程序。) 题目2 丢失的密码 题目描述: 尼克很久以前加密了一些非常重要的文件,当他现在要从这些文件中寻找一些重要信息时,他发现自己忘记了密码。幸运的是,他发现了一些没有加密的文件,于是他根据这些文件利用一个特殊的程序找回了密码。然而,这个程序有一个BUG,它找到的密码很长很长,因为它重复COPY原始密码,例如,若原始密码是“aab”,程序将输出“aabaabaabaab...”,但是重复次数是随机的。现在尼克想请您帮助他找出原始密码。 输入: 从指定的文本文件 如 c:\prog\keyGetted.txt 中读取字符串,此文件中每行(以回车符作为结束标志)都是一个被找出的密码,每行的长度均不超过100000,且都是小写字母a-z,注意程序找出的密码可能不是原始密码的精确复制,最后一次复制可能不完全,例如若程序找出的密码是“abcdabcdabcdab”,则原始密码也为“abcd”。 输出: 输出每一行字符串代表的原始密码到文件 如 c:\prog\keyOriginal.txt 输入举例: abcdabcdab aabaabaabaab cdcdcdcdc 输出举例: abcd aab cd 题目3 趣味链表 功能要求: 使用C语言实现以下功能 (1) 能够使用命令行指令生成简单的表,表的结构可设计成类似于Access形式。 如 学号 姓名 分数 01 jean

文档评论(0)

maritime5 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档