11427C++面向对象程序设计实验指导书.docx

上传人:b****3 文档编号:629121 上传时间:2022-10-11 格式:DOCX 页数:11 大小:19.06KB
下载 相关 举报
11427C++面向对象程序设计实验指导书.docx_第1页
第1页 / 共11页
11427C++面向对象程序设计实验指导书.docx_第2页
第2页 / 共11页
11427C++面向对象程序设计实验指导书.docx_第3页
第3页 / 共11页
11427C++面向对象程序设计实验指导书.docx_第4页
第4页 / 共11页
11427C++面向对象程序设计实验指导书.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

11427C++面向对象程序设计实验指导书.docx

《11427C++面向对象程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《11427C++面向对象程序设计实验指导书.docx(11页珍藏版)》请在冰豆网上搜索。

11427C++面向对象程序设计实验指导书.docx

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

实验1环境熟悉和类与对象

1.实验目的

(1)熟悉上机环境,了解编译过程中常见的错误与解决办法。

(2)学会编写简单的C++程序并会用debug调试程序。

(3)观察构造函数和析构函数的执行过程。

(4)掌握动态内存分配的两个运算符的使用

(5)掌握函数参数的三种传递方式。

(6)学习利用友元求解问题。

2.实验内容

(1)定义一个学生类,学生信息有学号、姓名和成绩。

成绩包括计算机、英语、

数学成绩和平均分。

要求利用队列实现学生的入队、出队和显示等功能。

算法思路:

定义一个类Student,数据成员有:

学生信息,进行入队、出队和显示操作的front(队头)、rear(队尾)和num(统计队列中元素的个数),其中学生信息定义成结构体类型的数组;成员函数有学生的入队操作、出队操作和显示操作,通过构造函数对学生信息进行初始化。

(2)定义一个图书类,图书信息有图书名称、作者、出版社、价格。

要求利用

栈实现图书的入库、出库和显示等功能。

算法思路:

定义一个类Stack,数据成员有:

图书信息,进行入库、出库和显示操作的top(栈顶指针),其中图书信息定义成结构体类型的数组;成员函数有图书的入库、出库和显示操作,通过构造函数对图书信息进行初始化。

(3)有Distance类和Point类,将Distance类定义为Point类的友元类来实现

计算两点之间距离。

实验2函数重载与内联函数

1.实验目的

(1)掌握函数重载的应用。

(2)理解内联函数的作用,掌握内联函数的应用。

2.实验内容

(1)利用重载求两个整数、三个整数和四个整数的最小值。

(2)利用重载计算长方形、正方形、圆、梯形的面积。

(3)利用重载编写求整数绝对值和求实数绝对值。

(4)利用重载实现对10个整数和10个实数的排序。

(5)判断一个字符是否为数字字符,要求用内联函数实现。

实验3常量与引用

1.实验目的

(1)理解常量的含义与#define的区别。

(2)理解引用的含义与指针的区别。

(3)能够熟练掌握const的各种使用方法。

(4)能够熟练应用引用、掌握拷贝构造函数的使用方法。

2.实验内容

(1)利用const定义整型常量、浮点型常量与字符型常量。

(2)使用const与指针结合,实现常指针与指针常量。

(3)使用const与函数结合,实现常参数与返回值为常数的函数。

(4)利用const定义常对象,实现常成员函数。

(5)分别利用引用与指针实现交换两个数值功能的函数,比较不同。

实验4静态与命名控制

1.实验目的

(1)了解静态对象的定义和使用方法。

(2)掌握静态数据成员和静态成员函数的定义和使用方法。

2.实验内容

(1)利用静态数据成员的概念,编写一个类,统计目前存在多少个该类的对象。

提示:

定义静态数据成员count,用来统计对象数目。

(2)利用静态数据成员的概念,编写一个学生类,学生信息包括姓名、学号、成绩;统计学生的总人数及总成绩,并输出。

提示:

定义静态数据成员total_num和total_score,分别用来统计学生的总人数及总成绩。

(3)定义一个Dog类,用静态数据成员Dogs记录Dog的个体数目,静态成员

函数GetDogs用来存取Dogs。

设计并测试这个类。

(4)利用静态的概念,编写一个小猫类,统计并输出每个小猫的重量、小猫的

总数量及总重量。

实验5运算符重载

1.实验目的

(1)掌握成员函数重载运算符。

(2)掌握友元函数重载运算符。

(3)理解类型转换的必要性,掌握类型转换的使用方法。

2.实验内容

(1)重载减法运算符,实现两个字符串相减。

-=运算符重载函数:

constclassname&classname:

:

operator-=(constclassname&sub_str)//定义+=运算符重载函数

{

char*temp=buffer;//指向原字符串所占空间

buffer=newchar[length+1];//重新分配空间

inti,j,k;

i=0;

j=0;

k=0;

while(i

{

if(temp[i]!

=sub_str.buffer[j])

{

buffer[k]=temp[i];

k++;

}

else

j++;

i++;

}

while(i

{

buffer[k]=temp[i];

k++;

i++;

}

buffer[k]='\0';

delete[]temp;//释放原字符串所占空间

return*this;

}

classname:

指定义的类的名称。

buffer:

用来存放字符串。

length:

字符串的长度。

(2)编写一个程序,用成员函数重载运算符“+”和“-”,实现两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。

类的声明:

constintm=3;

constintn=4;

classMatrix

{

private:

inta[m][n];

public:

Matrix();

Matrix(intb[][n]);

Matrixoperator+(Matrixb);

Matrixoperator-(Matrixb);

voidPrint();

};

(3)编写一个程序,用友元函数重载运算符“+”和“-”,实现两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。

类的声明:

constintm=3;

constintn=4;

classMatrix

{

private:

inta[m][n];

public:

Matrix();

Matrix(intb[][n]);

friendMatrixoperator+(Matrixa,Matrixb);

friendMatrixoperator-(Matrixa,Matrixb);

voidPrint();

};

(4)设计人民币类,其数据成员为fen(分)、jiao(角)、yuan(元)。

重载这个类的加法、减法运算符。

类的声明:

classRmb

{

private:

intyuan;

intjiao;

intfen;

public:

Rmb(inty=0,intj=0,intf=0):

yuan(y),jiao(j),fen(f){}

Rmboperator+(Rmbb);

Rmboperator-(Rmbb);

voidPrint();

};

(5)使用构造函数实现二维向量类型和复数类型的相互转换。

类的声明:

classVector;

classComplex

{

private:

doublereal;

doubleimag;

public:

Complex(doubler=0,doublei=0);

doublegetReal();

doublegetImag();

Complex(Vector);

voidprint();

};

classVector

{

private:

doublex,y;

public:

Vector(doubletx=0,doublety=0);

doublegetx();

doublegety();

Vector(Complex);

voidprint();

};

实验6组合、继承与多态

1.实验目的

(1)了解掌握组合与继承在定义类的不同与特点。

(2)理解掌握累的构造与析构顺序,能够熟练使用继承进行类的定义。

(3)理解虚函数使用方法与特点,熟练使用虚函数。

(4)了解掌握纯虚函数与抽象类的特点与使用方法。

(5)了解多重继承方法与特点,并熟练应用多重继承。

2.实验内容

(1)利用组合与继承结合方法实现定义一个班级类(学生类在下面People类上进行派生),类中包含班级专业名称、学生数量、学生类对象列表。

classPeople

{

private:

charName[20];

charSex[2];

public:

char*constGetName(){returnName;}

voidSetName(constchar*sname){strncpy(Name,sname,19);}

};

(2)定义实现交通工具、汽车、小汽车三个层次派生类,了解继承中类对象的构造与析构。

(3)在

(2)的基础上,增加虚函数,了解函数的动态绑定与静态绑定。

(4)首先定义点类、颜色类,然后利用多重继承方法定义矩形类、圆形类。

实验7模板

1.实验目的

(1)掌握函数模板与模板函数的使用。

(2)掌握类模板与模板类的使用。

2.实验内容

(1)编写一个使用类模板对数组进行排序、查找和求元素和的程序。

类模板的声明:

constintSIZE=10;

template

classArray

{

private:

Ta[SIZE];

public:

Array();

voidsort();

intfind(Tk);

Tsum();

voidPrint();

};

(2)编写一个一维数组,无论整型还是其他类型,可以进行相同的操作:

插入、删除、查找某一元素、排序等功能。

类模板的声明:

constintMAXSIZE=10;

template

classArray

{

private:

Ta[MAXSIZE];

intlast;

public:

Array();

intInsert(inti,Tx);

intDel(inti);

voidSort();

intFind(Tk);

voidPrint();

};

(3)用类模板实现将两个升序链表组成一个降序链表。

数据元素可以是整型、实型。

类模板的声明:

constintMaxlen=15;

template

structNode{

Tdata;

Node*next;

};

template

classLinkList

{

private:

Node*head1;

Node*head2;

Node*head3;

intn1,n2,n3;

public:

LinkList();

voidCreateLinkList(Node*h);

voidMerge();

voidPrint_LinkList();

};

(4)用类模板实现栈,功能有:

判断栈是否为空、入栈、出栈、读栈顶元素。

类模板的声明:

constintMAXSIZE=100;

template

classStack

{

private:

Tdata[MAXSIZE];

inttop;

public:

Stack();

intEmpt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1