川师c++实验报告含截图Word文档下载推荐.docx

上传人:b****2 文档编号:5744631 上传时间:2023-05-05 格式:DOCX 页数:39 大小:27.45KB
下载 相关 举报
川师c++实验报告含截图Word文档下载推荐.docx_第1页
第1页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第2页
第2页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第3页
第3页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第4页
第4页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第5页
第5页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第6页
第6页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第7页
第7页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第8页
第8页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第9页
第9页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第10页
第10页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第11页
第11页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第12页
第12页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第13页
第13页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第14页
第14页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第15页
第15页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第16页
第16页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第17页
第17页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第18页
第18页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第19页
第19页 / 共39页
川师c++实验报告含截图Word文档下载推荐.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

川师c++实验报告含截图Word文档下载推荐.docx

《川师c++实验报告含截图Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《川师c++实验报告含截图Word文档下载推荐.docx(39页珍藏版)》请在冰点文库上搜索。

川师c++实验报告含截图Word文档下载推荐.docx

验证

综合

设计

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()

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2