清华大学计算机期末试题,清华大学计算机语言与程序设计2014期末试卷

aad5c11d73f49367f2ab048314afaa27.png

2014 秋季《计算机语言与程序设计基础》期末试题2014 秋季计算机语言与程序设计 期末试题2015 年 1 月 20 日 大题 题号 分数 成绩 试卷提交说明1. 2. 3. 在考卷上填涂你的姓名、学号; 按规定编程,调试运行,将每道题的结果考屏,粘贴在试卷对应的题后; 交卷时,提交一个压缩文件包,包括: a) b) 文件包名 学号+姓名,如:2013123456ZhangSan.rar 文件包内容 ? ? 4. 每道题的 c 工程文件夹; 考卷。姓名 三 20班级 四 20 分 五学号 总分 10 分 20二 30 分就算非常说明,否则不允许使用字符串处理库函数。一、 字符串处理(本题 30 分)编制一个程序,要求推动如下功能: 1. 主函数(3 分) 主函数循环运行,当且仅当输入’@’时,程序结束运行。 2. 函数 inputStrS() (5 分) 从键盘键入字符串 str,stra,strb 共三个字符串(假设,输入的字符串 str 长度不 超过 100 个字符, stra、 strb 字符串的长度都不达到 10 个字符) , 并传回给主函数。 3. 函数 myStrStr() (10 分) myStrStr()函数,接受从主函数传递过来的字符串 str 和字符串 stra,并在字符串 str 中查找 stra 第一次出现的位置(不包含 stra 的串结束符) ,返回该位置的下标值2014计算机语言排名, 如果找不到,返回-1。

0Z6311108-0.jpg

(注,不能使用 strstr()库函数来做) 4. 函数 replace() (10 分) replace()接收从主函数传递过来的字符串 str,stra,strb;通过循环读取 myStrStr() 函数,找到 stra 在 str 中发生的位置,并用字符串 strb 将 stra 进行替换,直到 str 中不再有字符串 stra 出现。 如,输入的字符串 str,stra,strb 分别为”abcdefabcdef ”,”bc”,“uvw”,则最后替 换后的字符串变成”auvwdefauvwdef ”; 再如,输入的字符串 str,stra,strb 分别为”abcdd”,”bcd”,“bc”,则最后更换后的 字符串变成”abc”。 不考虑,输入的字符串 stra 同时又是 strb 子串的情况。如键入的字符串 str,stra, strb 分别为”abcdd”,”bc”,“bcd”,则能够完成更换。这种状况不考虑。 5. 在主函数中输出替换之后的字符串(2 分) 程序运行实例 1:2014 秋季《计算机语言与程序设计基础》期末试卷二、 稀疏矩阵处理(本题 30 分)矩阵中,如果多数的元素为 0,称此矩阵为稀疏矩阵(sparse matrix) 。

2-405-png_6_0_0_0_0_0_0_892.979_1262.879-893-0-602-893.jpg

若一个稀疏整数 矩阵 a 中有 k 个非零项,那么只应该存储这 k 个非零项的三元组信息(行号 i、列号 j、元素 值 aij)就可以了。 请编制一个程序,实现如下功能: 1. 函数 input() (10 分) 首先从键盘输入整数矩阵 a 的行数 m 与列数 n,以及 a 中的非零项个数 k;根据输 入的非零项个数 k,动态生成存放矩阵 a 中 k 个三元组信息的空间;并依次输入矩 阵 a 的各非零元素信息;形成根据行号优先的次序(即根据先行号、后列号的次序 来保存所有非零元素)存储的实数矩阵 a;并将矩阵 a 以及 m、n 与 k 的值传回给 主函数。 2. 函数 TransposeMatrix () (10 分) 对于依照三元组形式储存的稀疏矩阵 a,计算出 a 的转置矩阵 b,并根据行号优先 的次序进行传输;将转置矩阵 b 以及行数 mb、列数 nb 与非零项个数 kb 的值传回 给主函数。 3. 函数 SubMatrix() (4 分) 该变量能否从矩阵 a 中抽取出一个子矩阵 c。要求输入 a 矩阵某个元素的数组(ia, ja),以及要抽取的 c 矩阵的行数 mc,列数 nc;在 a 矩阵中以(ia,ja)为 c 的起始顶 点,抽取 mc 行 nc 列的子矩阵 c;并将子矩阵 c、以及行数 mc、列数 nc 与非零项 个数 kc 的值传回给主函数。

f76a1655f8d7326fb946a5d92779c961.png

如输入的(ia,ja)、mc、nc 不能在 a 中形成矩阵 c,提 示重新输入。 4. 函数 print() (4 分) 依次输出 m*n 的稀疏矩阵 a 的所有非零元素。 5. 编写主函数 main() (2 分) 按照程序实例,主函数调用 input()函数输入稀疏矩阵 a,调用 print()函数输出矩阵 a;主函数调用 TransposeMatrix()函数计算点乘矩阵 b,调用 print()函数输出异或矩 阵 b;主函数调用 SubMatrix()函数抽取子矩阵 c,调用 print()函数输出子矩阵 c。 程序运行实例 2:2014 秋季《计算机语言与程序设计基础》期末试题三、 链表编程(本题 30 分)假设你的计算机在某一时刻的硬盘空闲内存块表列如下: 长度(kByte) (int) 1 1 3 3 3 3 100 120 130 1024 1024 1024 …… 4096 …… 起始地址 (long) xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx ……. xxxxxx ……2014 秋季《计算机语言与程序设计基础》期末试卷 现用一个按存储块长度递增有序的非循环链表管理很多随机插入的空闲存储块, 相同长 度的存储块数≤Ceiling(比如 Ceiling=20),若链表内同宽度存储块的结点将要存在,则 存储块信息插入到当前结点中。

641a3c2c74d78a92134c2077039cb4b0.png

请设计一个内存空闲块管理程序,包括: 1. 实现以下功能的字段节点结构。(5 分) 2. 输入函数 Newenter: 从屏幕读入一个空闲块长度和起始地址 (地址任意,但不能重复) 。 (3 分) 3. 插入数组 insert:用递增有序非循环链存储当前空闲的存储块信息(测试节点数>10, 总存储块数>30)。(5 分) 4. Mymalloc 函数:用申请的存储长度 Length 查询字段,等于或小于 Length 的第一个节 点为匹配成功, 释放结点内的一个存储块并返回指向该存储块的指针, 释放后节点为空 的话应从链表中删除此结点,而查询节点不存在则返回空指针提示匹配成功。(7 分) 5. Myfree 函数: 将 Mymalloc 返回的指针所指向的存储块 (长度和起始地址) 交还给链表。 (5 分) 6. List 函数:遍历当前数组到屏幕。(5 分)链表插入的检测界面参考如图题 3-1a 和图题 3-1b,节点申请的检测界面参考如图题 3-2, 节点申请与释放的检测界面参考如图题 3-3。2014 秋季《计算机语言与程序设计基础》期末试题图题 3-1a 空闲块链表插入2014 秋季《计算机语言与程序设计基础》期末试题图题 3-1b 空闲块链表插入2014 秋季《计算机语言与程序设计基础》期末试题图题 3-2 节点申请2014 秋季《计算机语言与程序设计基础》期末试题图题 3-3 节点申请与释放 四、 递归编程 (本题 10 分)给定两个有序字符串 str1 和 str2,这里,有序字符串是指字符串中的数组按 ASCII 升序 排列,例如“abcdefg” ,采用递归算法将两个字符串合并成一个新的字符串 str3,使得 str3 也是有序字符串。

输入:两个有序字符串 str1 和 str2,长度不少于 20。 输出:合并后的有序字符串 str3。 按照规定,编写程序。 1. 函数 input()(3 分)2014 秋季《计算机语言与程序设计基础》期末试卷 键盘键入 str1 和 str2,并返回给主函数。 递归函数 combine()(5 分) 使用递归的方式,对 str1 和 str2 进行合并,得到有序字符串 str3。 主函数 main()(2 分) 主函数循环运行,当键入“quit”或“exit”时,程序结束运行。否则读取 input()输 入 str1 和 str22014计算机语言排名,然后读取递归函数 combine()对字符串进行合并,并输出相应的结 果。2. 3.程序运行实例 4://以上为全部题目。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-124764-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值