77范文网 - 专业文章范例文档资料分享平台

C++面向对象程序设计实验指导书[1](8)

来源:网络收集 时间:2018-12-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

C++面向对象程序设计实验指导书 实验九

实验九 模板类的构造

9.1 实验目的

1.理解和应用类模板和函数模板; 2.复习数据结构的相关知识;

3.学习用C++的编程思想实现链表类。

9.2 实验内容 9.2.1程序阅读

1.理解下面的动态数组类模板,它由一系列位置连续、任意数量相同类型的元素组成,其元素个数可在程序运行时改变,并完成该类中没有完成的成员函数(不允许改变已有代码),并设计主函数,实现对该模板类的功能测试。

#include #include

//容错处理

enum ErrorType {

invalidArraySize,memoryAllocatetionError,indexOutOfRang };

char *errorMsg[] = {

\,

\, \ };

template class Array {

private:

T* alist; int size;

void Error(ErrorType error) const;//输出错误信息 public:

Array(int sz=50);//构造函数

32

C++面向对象程序设计实验指导书 实验九

Array(const Array& X);//拷贝构造函数 ~Array(void);//析构函数

Array& operator=(const Array& rhs);//重载赋值运算符 T& operator[](int i);//重载下标运算符 int GetSize(void) const;//获取数组大小 void Resize(int sz);//重新设置数组大小 };

template

Array::Array(int sz) {

if(sz <= 0) Error(invalidArraySize); size = sz;

alist = new T[size]; if(alist == 0) Error(memoryAllocatetionError); }

template

Array::Array(const Array& X) {

int n = X.size; size = n;

alist = new T[n]; if(alist == 0) Error(memoryAllocatetionError); T* srcptr = X.alist; T* destptr = alist; while(n--) *destptr++ = *srcptr++; }

template Array::~Array() {

delete[] alist; }

template

Array& Array::operator=(const Array &rhs) {

int n = rhs.size; if(size != n) {

33

C++面向对象程序设计实验指导书 实验九

delete[] alist; alist = new T[n]; if(alist == 0) Error(memoryAllocatetionError); size = n; }

T* destptr = alist; T* srcptr = rhs.alist; while(n--) *destptr++ = *srcptr++; return *this; }

template

T& Array::operator[](int n) {

if(n < 0 || n > size-1) Error(indexOutOfRang); return alist[n]; }

void main() { }

9.2.2 程序设计

1.设计一个通用链表类,要求如下:

a.数据成员包含头指针、尾指针、链表中节点个数、顺序访问中当前节点指针和当前节点前一个节点的指针;

b.主要的成员函数包含:生成节点(在链表头、尾以及任意位置)、插入节点、删除节点、访问/修改节点、遍历链表,以及一些辅助函数等; c.能实现两个链表的复制;

d.能实现两个链表对象的赋值;

e.在测试程序中定义两个整型链表A和B,本别插入5个元素,然后把B中的元素加入A的尾部。

9.3思考题

1.根据数据结构和类模板知识,定义一个通用队列(先进先出)类并加以实现,编写主函数进行测试;

2.根据数据结构和类模板知识,定义一个通用栈(后进先出)类并加以实现,编写主函数进行测试。

34

C++面向对象程序设计实验指导书 实验十

实验十 C++的I/O流类库

10.1 实验目的

1.理解C++输入输出流类库;

2.掌握ios类中用于控制输入输出成员函数的使用; 3.掌握操纵符格式控制的使用;

4.掌握用户自定义数据类型的输入输出方式; 5.掌握文本文件和二进制文件的输入输出;

6.将C++输入输出流灵活应用到类和对象知识中。

10.2 实验内容 10.2.1程序阅读

1.阅读下列程序,然后上机运行验证输出结果,并回答下列问题。

#include \

void showflags(long f) {

long i = 0x8000; for(; i; i=i>>1) { if(i&f) cout<<\; else cout<<\; }

cout<

void main() {

showflags(cout.flags());

cout<<\<

cout<<\<

35

C++面向对象程序设计实验指导书 实验十

}

cout<<\<

cout<<123<<\ \<<123.45678<<\ \<<234.567<

cout<<\<

cout<<\<

cout<<123<<\ \<<123.45678<

cout<<123<<\ \<<123.45678<

cout<<\<

showflags(cout.flags());----------------------------------------------------------② cout.setf(ios::right|ios::unitbuf);

showflags(cout.flags());----------------------------------------------------------③

问题一:①处的输出结果是什么,为什么? 问题二:②处的输出结果是什么,为什么? 问题三:③处的输出结果是什么,为什么?

(提示:在x_flags变量中left=0x0002,right=0x0004,unitbuf=0x2000)

10.2.2 程序设计

1.采用预定义的输入输出操纵符格式控制改造10.2.1中第一题,使其达到相同的输出效果。 2.定义一复数类CComplex(类中含有实部real和虚部imag私有成员变量,都为double类型),重载输入运算符>>和输出运算符<<,使得该类可以直接通过输入输出运算符进行输入输出操作。

3.有一名为test.txt的文件,里面分两行分别存储了整数12345678和字符串abcdefg,设计两个完整的程序,第一个程序以文本文件的方式存取该文件,第二个程序以二进制的方式存取该文件,并比较以这两种方式存取该文件对文件本身有什么影响。

10.3思考题

1.设计一学生注册信息登记程序,该程序要求达到以下要求: a.学生信息包括姓名,学号,性别;

b.学生信息要求能够循环从键盘输入,如果输入0 0 0,则退出输入;

c.将所有输入的学生信息按文本文件的方式存储到一名为stureginfo.txt的文件中,文件中

36

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++面向对象程序设计实验指导书[1](8)在线全文阅读。

C++面向对象程序设计实验指导书[1](8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/400705.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: