川师c++实验报告含截图Word文档下载推荐.docx
- 文档编号:5744631
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:39
- 大小:27.45KB
川师c++实验报告含截图Word文档下载推荐.docx
《川师c++实验报告含截图Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《川师c++实验报告含截图Word文档下载推荐.docx(39页珍藏版)》请在冰点文库上搜索。
验证
综合
设计
1
类与对象
4
√
函数重载,类的设计与使用
2
C++程序的结构
作用域与生存期,静态成员
3
数组、指针与字符串
三种常见编程元素的使用
继承与派生
派生类的设计与使用
5
多态性
运算符重载、动态多态
6
模板和文件
模板,异常处理机制的设计
四、实验内容安排:
实验一类与对象
(设计性实验4学时)
1.目的要求:
1)掌握类的定义和使用;
掌握类对象的声明;
练习具有不同访问属性的成员的访问方式;
观察构造函数和析构函数的执行过程;
2)学习类组合使用方法;
3)使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
2.实验内容:
1)编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
#include<
iostream>
usingnamespacestd;
intmax1(inta,intb)
{
return(a>
b?
a:
b);
}
intmax2(inta,intb,intc)
returnmax1(a,max1(b,c));
doublemax3(doublea,doubleb)
doublemax4(doublea,doubleb,doublec)
returnmax3(a,max3(b,c));
intmain()
inta,b,c;
floatd,e,f;
cout<
<
"
请输入三个整数:
endl;
cin>
>
a;
b;
c;
请输入三个双精度数:
d;
e;
f;
a,b中最大的是:
max1(a,b)<
d,e中最大的是:
max3(d,e)<
a,b,c中最大的是:
max2(a,b,c)<
d,e,f中最大的是:
max4(d,e,f)<
return0;
2)写一个函数,具有一个引用作为形参参数,在函数中改变引用变量的值,观察实参变量的变化。
(1)值传递
#include<
voidswap(intx,inty);
intmain()
{
inta=3,b=4;
cout<
"
a="
<
a<
b="
b<
endl;
swap(a,b);
}
voidswap(intx,inty)
intt=x;
x=y;
y=t;
(2)地址传递
voidswap(int*x,int*y);
swap(&
a,&
voidswap(int*x,int*y)
intt=*x;
*x=*y;
*y=t;
(3)引用传递
voidswap(int&
x,int&
y);
x,int&
y)
intt=x;
3)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
classCPU
public:
CPU()
{
cout<
startworking"
}
~CPU()
finishworking"
voidrun(longf,floatv);
voidstop();
private:
longfrequency;
floatvoltage;
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
};
voidCPU:
:
run(longf,floatv)
intm;
frequency=f;
voltage=v;
m;
switch(m)
case1:
cout<
P1<
break;
case2:
P2<
case3:
P3<
case4:
P4<
case5:
P5<
case6:
P6<
case7:
P7<
frequency<
voltage<
stop()
frequency=0;
voltage=0;
CPUc;
c.run(2300,254.7);
c.stop();
4)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,为以上的类编写构造和析构函数,观察组合类和内嵌类的构造函数和析构函数的调用顺序。
classRAM
RAM(intw)
a=w;
thereisram"
~RAM()
thereisnoram"
inta;
classCDROM
CDROM(intn)
b=n;
thereiscdrom"
~CDROM()
thereisnocdrom"
intb;
CPU(intm)
c=m;
thereiscpu"
thereisnocpu"
intc;
classComputer
Computer(CPUcpu1,RAMram1,CDROMcdrom1);
~Computer()
nocomputer"
voidrun()
{}
voidstop()
RAMram;
CDROMcdrom;
CPUcpu;
Computer:
Computer(CPUcpu1,RAMram1,CDROMcdrom1):
cpu(cpu1),ram(ram1),cdrom(cdrom1)
constructorofcomputer"
CPUcpu2
(1);
RAMram2
(2);
CDROMcdrom2(3);
Computercomputer(1,2,3);
5)为题目2)的类编写复制构造函数,在主函数中利用复制构造的方式创建新的对象,观察对象的状态。
classpoint
point(intxx=0,intyy=0)
x=xx;
y=yy;
intgetx()
returnx;
intgety()
returny;
point(point&
p);
intx,y;
point:
point(point&
p)
x=p.x+3;
y=p.y+7;
pointxp(2,3);
pointnewpoint(xp);
newpoint.getx()<
newpoint.gety()<
6)思考并回答以下概念:
函数重载,引用,类,对象,数据成员,函数成员,访问属性,构造函数,析构函数,类的组合,内嵌对象,初始化列表,复制构造函数。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验二C++程序的结构
(设计性实验2学时)
1)观察程序运行中变量的作用域、生存期和可见性;
2)学习类的静态成员的使用;
3)学习多文件结构在C++程序中的使用。
7)实现客户机(CLIENT)类。
定义字符型静态数据成员ServerName,保存其服务器名称;
整型静态数据成员ClientNum,记录已定义的客户数量;
定义静态函数ChangeServerName()改变服务器名称。
classCLIENT
CLIENT(){ClientNum++;
~CLIENT(){ClientNum--;
staticvoidChangeServerName(charr);
intget(){returnClientNum;
chargett(){returnServerName;
staticcharServerName;
staticintClientNum;
voidCLIENT:
ChangeServerName(charr)
ServerName=r;
intCLIENT:
ClientNum=0;
charCLIENT:
ServerName='
A'
;
CLIENTA;
charm;
name="
CLIENT:
ChangeServerName(m);
A.get()<
A.gett()<
CLIENTB;
B.get()<
B.gett()<
8)利用多文件结构实现题目1),在头文件client.h中定义类,在文件client.cpp中实现该类,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况,要求ClientNum能够实时记录客户机对象的数量。
/////////////////////////////////////////////client.h///////////////////
////////////////////////////////////////////////////client.cpp//////////////////////////
#include"
client.h"
//////////////////////////////main.cpp//////////////////////////
9)思考并回答以下概念:
类的静态数据成员,类的静态函数成员,多文件结构,文件包含。
Windows2000+VC6.0
实验三数组、指针与字符串实验
(设计性实验4学时)
1)学习使用数组;
学习字符串数据的组织和处理;
学习标准C++库的使用;
2)掌握指针的使用方法;
练习通过debug观察指针的内容及其所指的对象的内容;
练习通过动态内存分配实现动态数组,并体会指针在其中的作用;
3)分别使用字符数组和标准C++库练习处理字符串的方法。
10)编写一个类用于处理3×
3矩阵转置,测试转置的效果,输出转置前后的矩阵。
classJZ
JZ(intm[3][3])
for(i=0;
i<
3;
i++)
for(j=0;
j<
j++)
a[i][j]=m[i][j];
voidzhuanzi()
{
inttemp;
i;
j++)//转置只需要转对角线的一边
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
voidshow()
{
cout<
a[i][j];
}
inta[3][3];
inti,j;
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
JZb(a);
b.show();
b.zhuanzi();
11)定义一个具有构造函数和析构函数的类,如实验一的CPU类,定义一个CPU的对象数组,观察构造函数的析构函数的调用过程。
CPUiscreated!
CPUisdestroyed!
CPUcpu[3];
12)利用动态内存分配的方式重新完成题目2)。
13)使用系统提供的string类定义字符串对象并初始化,实现从原始字符串中提取一个子串。
string>
stringstr1="
abcdefgh"
str2;
unsignedintpos=0;
unsignedintn=0;
pos="
pos;
n="
n;
if(pos<
str1.length()&
&
n<
=str1.length()-pos)
str2=str1.substr(pos,n);
str2<
14)选做:
定义一个Point(二维点类)的对象数组,利用该数组实现直线的线性拟合。
15)选做:
定义一个动态数组类。
16)思考并回答:
数组,指针,对象数组,动态内存分配,默认构造函数,标准类库,字符串类string,线性拟合。
3.主要仪器设备及软件:
实验四继承与派生
(设计性实验2学时)
1)学习定义和使用类的继承关系,定义派生类;
熟悉不同继承方式下对基类成员的访问控制;
2)学习利用虚基类解决二义性问题。
17)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?
编程试试看。
classanimal
intage;
classdog:
publicanimal//如果age为私有成员,则不能被继承
voidsetage(intn)
age=n;
age<
dogd;
d.setage(3);
18)定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,定义该派生类的对象,观察构造函数和析构函数的执行情况。
classbaseclass
intnumber;
baseclass()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 川师 c+ 实验 报告 截图