博学谷——让IT教学更简单,让IT学习更有效 { T t; }
14、请按照下列要求编写程序:
1)定义一个异常类Cexception,有成员函数reason(),用来显示异常的类型。
2)定义一个函数fun1()触发异常,在主函数try模块中调用fun1(),在catch模块中捕获异
常,观察程序执行流程。 15、请按照下列要求编写程序:
1)定义一个函数my_memcpy(),实现字符串的复制; 2)并用断言检测代码是否有误。
第七章答案
1、抛出异常 捕捉异常 处理异常 标准库中的异常类 类型 2、语法错误 运行错误 可预见异常 不可预见异常 3、try throw catch 4、 throw 0 int
exception_handler(int_n1, int_n2) 5、C 6、D 7、ABCD 8、D 9、对 10、错 11、错 12、对 13、
能通过过编绎; 结果:
main function constructor exception exception2 main function 14、
#define _CRT_SECURE_NO_WARNINGS #include
enum{EXCEPTION_1 = 1, EXCEPTION_2, EXCEPTION_3 }; class CException
博学谷——让IT教学更简单,让IT学习更有效
{
public: CException(int nReason) { m_nReason = nReason; } ~CException() {} void Reason() { cout << \ private: int m_nReason; };
void fn1(){ throw new CException(EXCEPTION_1); } int main() {
try{ fn1(); } catch (CException* e) { e->Reason(); } system(\ return 0; } 15、
#include
void *my_memcpy(void *dest, const void *src, int len)//编写memcpy函数 { int i; char *dest_cp; const char *src_cp;
//内存数据拷贝时,要求目标地址和原始数据所在地址都不为nullptr //若某个地址为nullptr则断言失败 assert(dest && src); dest_cp = (char *)dest; src_cp = (const char *)(src); for (i = 0; i < len; i++) //按字节完成数据拷贝 *dest_cp++ = *src_cp++; return dest_cp; }
int main() { char *dest = nullptr; //设置dest的初值为nullptr
博学谷——让IT教学更简单,让IT学习更有效 //调用my_memcpy()函数,首参数为nullptr my_memcpy(dest, \ return 0; }
第八章题目
一、填空题
1、STL的内容从广义上讲分为三个主要部分:、和。在STL的实现中,数据由管理,操作则由定义,在两者之间充当粘合剂。 2、序列式容器有两种存储方式:和。
3、list列表容器一般实现为链表,而且是链表。vector向量容器一般实现为一个。vector空间所能存储的最多元素的大小叫作向量容器的, 实际存储元素的个数叫做向量容器的。 4、STL中的算法大致分为、、和四类。 二、选择题
5、下列关于序列式容器的描述中,错误的是()
A、序列式容器是各元素之间有顺序关系的线性表,是一种线性结构的有序群集 B、序列式容器中元素都是可序的,但未必是有序的 C、序列式容器有连续存储和链式存储两种方式
D、序列式容器中的元素位置是固定的,无法进行更改 6、下列关于vector向量的描述中,错误的是() A、向量容器一般实现为一个动态分配的数组
B、向量容器中插入元素时,插入位置之后的元素都要被顺序的向后移动 C、将已有元素从微量容器中删除时,多出的闲置空间就会被释放
D、vector向量容器是一种支持高效的随机访问和高效向尾部插入新元素的容器 7、下列选项,哪一个函数无法访问deque队列中的元素() A、push_front() B、at C、front
D、[ ]
8、下列关于pair<>类模板的描述中,错误的是() A、pair<>类模板定义头文件utility中
B、pair<>类模板作用是将两个数据组成一个数据,两个数据可以是同一个类型也可以是不同的类型
C、创建pair<>对象只能调用其构造函数
D、pair<>类模拟提供了两个成员函数first与second来访问这的两个数据 三、判断题
9、STL现在是C++的一部分,被内置于C++编译器中。
10、STL中的容器一经定义大小就是固定的,无法自行进行扩展。
11、vector容器中除了可以使用下标运算符访问元素,还可以使用at(int idx)函数完成相同操
作。
12、STL标准库中提供了四种关联型容器:set(集合)、multiset(多重集合)、map(映射)、multimap(多重映射)。关联型容器都是有序的。
博学谷——让IT教学更简单,让IT学习更有效
四、简答题
13、请编写程序,用STL中的容器与算法来完成一场演讲比赛: 规则如下: 1、比赛方式
1)24名选手参加演讲比赛,决赛出前三名;
2)分组比赛,第组6个人,选手每次要随机分组进行比赛;
3)第一轮分为4个小组,每组6个人。比如100-105为一组,106-111为第二组,依次类推;每人按照抽签顺序进行比赛。当小组演讲赛后,淘汰组内排名最后的三个选手,然后继续下一个小组。
4)第二轮分为两个小组,每组6个人。比赛完毕,淘汰组内排名 后的三个选手,然后继续下一个小组的比赛;
5)第三轮只剩下6个人,本轮为决赛,选出前三名; 2、评委打分
10个评委打分,去除最低、最高分,求平均分;
每个选手演讲完,由10个评委分别打分,该选手的最终得分是去年掉一个最高分和一个最
低分,求得剩下的8个成绩的平均分。
第八章答案
1、容器 迭代器 算法 容器 迭代器 算法 2、连续存储 链式存储 3、双向 动态数组 容量 大小 4、不可变序列算法 可变序列算法 排序算法 数值算法 5、D 6、C 7、A 8、C 9、对 10、错 11、对 12、对 13、
#include #include
#include #include
博学谷——让IT教学更简单,让IT学习更有效
#include
public: string name; //选手姓名 int score[3]; //选手每一轮比赛的得分 };
//产生选手
int GenSpeaker(map
//选手抽签
int speech_contest_draw(vector
//选手比赛参数:第几轮比赛参数选手将比赛得分修改在mapSpeaker中比赛结果生成一个v2
int speech_contest(int index, vector