C++实验报告Word格式文档下载.docx
- 文档编号:21382028
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:26
- 大小:280.66KB
C++实验报告Word格式文档下载.docx
《C++实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++实验报告Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
cout<
<
"
sum="
sum<
endl;
}
(2)用FOR语句代替
voidmain()
{inti
(1),sum(0);
for(i;
i<
=10,i++)
sum;
(3)计算图形面积:
constfloatpi=3.1416;
intitype;
floatradius,a,b,area;
cout<
图形的类型是:
1:
圆形2:
长方形3:
正方形"
;
cin>
>
itype;
switch(itype)
case1:
圆的半径是:
cin>
radius;
area=pi*radius*radius;
面积是:
area<
break;
case2:
矩形的长,宽分别为"
a>
b;
面积为:
a*b<
case3:
正方形的边长是"
a;
面积是"
a*a<
defaut:
不是合法的输入"
时间的结构体:
structriqi
intyear;
intmon;
intday;
inthour;
intminut;
intsecond;
};
riqia;
输入时间日期"
输入年份"
a.year;
输入月份"
a.mon;
输入日期"
a.day;
输入小时"
a.hour;
输入分钟"
a.minut;
输入秒"
a.second;
时间是:
a.year<
--"
a.mon<
a.day<
a.hour<
:
a.minut<
[实验结果]
运行结果:
sum=55
去掉#include后出现四个错误
errorC2143:
syntaxerror:
missing'
'
before'
errorC2065:
'
cout'
:
undeclaredidentifier
errorC2297:
illegal,rightoperandhastype'
char[5]'
endl'
实验三、函数的应用(2学时)
1、实验目的:
掌握函数的定义和调用方法。
练习重载函数使用。
练习函数模板的使用
练习使用系统函数。
2、实验任务:
编写一个函数把华氏温度转换为摄氏温度,转换公式为:
C=(F-32)*5/9。
编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
使用重函数模板重新实现上小题中的函数Max1。
使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。
用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
3、实验步骤与结果
编写函数floatConvert(floatTempFer),参数的返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。
程序名为lab3_1.cpp.
分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。
程序名:
lab3_2.cpp。
使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名函数模板max1,其参数个数不同,实现函数重载,在main()函数中测试函数的功能。
和序名:
lab3_3.cpp。
在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。
lab3_4.cpp。
编写递归函数intfib(intn),在主程序中输入n的值,调用fib函数计算Fibonacci级数。
公式为fib(n)=fib(n-1)+fib(n-2),n>
2;
fib
(1)=fib
(2)=1。
使用if语句判断函数的出口,在程序中用cout语句输出提示信息。
lab3_5.cpp。
7)调试操作步骤如下:
选择菜单命令Build|StartDebug|StepIn,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时光标停在main()函数的入口处。
把光标移到语句answer=fib(n)前,从Debug菜单单击RunToCursor,在程序运行的DOS窗口中按提示输入数字10,这时回到可视界面中,光标停在第11行,观察一下n的值。
从Debug菜单中单击StepInto,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1))前,从Debug菜单单击RuntoCursor,再单击StepInto,程序递归调用fib函数,又进入fib函数,观察n的值。
继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。
再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。
4、实验原理
C++中函数的重载使得同样的函数名下,只要参数类型、数目不同时,即可根据输入的数据进行相应的函数调用,使用起来简单方便。
5、思考与体会
C++中,函数的运用与之前学过的C语言既有相同之处,也有着不同的地方。
相同的地方在于格式、用法等框架上的不变。
但是C语言中对于同样的函数名是只能够申明一种函数的,倘若有相同的函数名出现系统即会报错,所以用起来有时是极为不便的。
而C++中,函数的多态性与重载使得这一缺点得以补偿。
在对于不同的元素或对象进行同一种操作时,可以使用同样的函数名,只是对于形参类型的不同,虽然是调用的不同的函数,但是只要形参的个数、类型不同,是允许同名函数的存在的。
这对于编程与审阅都是很方便的。
6、部分参考代码
lab3_1:
iostream.h>
//转换公式
floatConvert(floatTempFer){
floatcon;
con=(TempFer-32)*5/9.0;
returncon;
//主函数
voidmain(void){
floatTem;
请输入华氏温度:
Tem;
摄氏温度为:
Convert(Tem)<
Lab3_2:
//参数为两个整形的函数
intmax1(inta,intb){
a=a>
b?
a:
returna;
//参数为三个整形的函数
intmax1(inta,intb,intc){
c?
c;
//参数为两个双精度浮点形的函数
intmax1(doublea,doubleb){
//参数为三个双精度浮点形的函数
intmax1(doublea,doubleb,doublec){
inta;
doubleb;
a=max1(1,2);
a<
a=max1(3,9,5);
b=max1(1.3,4.4);
b<
b=max1(3.4,5.6,7.5);
Lab3_3:
intmain(){
inti,j,k;
请输入要比较的3个数:
cin>
i>
j>
k;
cout<
最大数为:
max1(i,j,k)<
请输入要比较的2个数:
j;
max1(i,j)<
Lab3_4
math.h>
doublex;
inty;
请输入X,Y的值"
x>
y;
x<
^"
y<
="
pow(x,y)<
Lab3_5
intfib(intn){
ints;
if(n<
=2)
s=2;
else
s=fib(n-1)+fib(n-2);
returns;
intn;
Inputn:
n;
fib(n)<
实验四、类与对象(2学时)
1、实验目的:
掌握类的定义和使用
掌握类的定义和对象的声明
复习具有不同访问属性的成员的访问方式。
察构造函数和析构函数的执行过程。
学习类的聚集使用方法。
使用DEBUG来调试程序,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
2、实验任务
1)定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中rank为枚举类型CPU_Rank,定义为enumCPU_Rank={P1=1,P2,P3,P4,P5,P6,P7},frequency为单位为MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
2)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。
3、实验步骤与结果
首先定义枚举类型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。
在主程序中定义一个CPU类的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。
lab4_1.cpp。
使用debug调试功能观察lab4_1.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
参考程序如下:
(3)调试操作步骤如下:
Build|StartDebug|StepInto命令,系统进行单步执行状态,程序开始运行,一个DOS窗口出现,此时光标停在main()函数的入口处;
A)从Debug菜单栏中单击StepOver,此时,光标下移,程序准备执行CPU对象的初始化;
B)单击StepInto,程序准备执行CPU类的构造函数;
C)连续单击StepOver,观察构造函数的执行情况,直到执行完构造函数,程序回到主函数;
D)此时程序准备执行CPU对象的run()函数,单击StepInto,程序进入run()成员函数,连续单击StepOver,直到回到main()函数;
E)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识;
F)再试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。
G)选定义CPU类、RAM类、CDROM类。
再定义Computer类:
定义私有数据成员cpu、ram、cdrom,定义公有成员函数run、stop,可在其中输出提标信息居主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。
lab4_2.cpp。
(5)使用debug调试功能观察lab4_2.cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。
类的引入、定义和使用
类的嵌套使用
构造函数与析构函数的作用即执行时段
枚举类型的用法
Visualc++调试工具的使用
C++是面向对象的一种计算机语言,虽然与C语言有着很大的关系,但是于面向过程的C,还是有不同,比如引入了类这一概念。
类类似于C语言中的结构体,但又与结构体有区别。
类是抽象得到的数据和行为的封装,在C++中是一个基础的成员。
Lab4_1
enumRank{p1=1,p2,p3,p4,p5,p6,p7};
//CPU类
classCPU{
public:
Rankrank;
intfrequency;
floatvoltage;
CPU(Rankr,intf,floatv){//构造函数
构造了一个CPU"
rank=r;
frequency=f;
voltage=v;
voidrun(){
CPU开始运行"
voidstop(){
CPU停止运行"
voidshow(){
RANK="
rank<
frequency="
frequency<
voltage="
voltage<
~CPU(){cout<
析构函数"
}//析构函数
CPUcpu(p5,500,2000);
cpu.run();
cpu.show();
cpu.stop();
return0;
Lab4_2
CPU(Rankr,intf,floatv){
cpu析构函数"
//RAM类
classRAM{
RAM(inti=0){cout<
构造了一个RAM"
~RAM(){cout<
Ram析构函数"
//CDROM类
classCDROM{
CDROM(inti=0){cout<
构造了一个CDRAM"
~CDROM(){cout<
CDRam析构函数"
//computer类
classcomputer{
computer(Rankr,intf,floatv){
CPUcpu(r,f,v);
//定义CPU对象
RAMram
(1);
//定义RAM对象
CDROMcdrom
(1);
//定义CDROM对象
cpu.run();
cpu.show();
cpu.stop();
computercom(p4,300,3000);
实验七、继承与派生(一、二)4学时
学习定义和使用类的继承关系,定义派生类。
熟悉不同继承方式下对基类成员的访问控制。
学习利用虚基类解决二义性问题
2、实验任务
a)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?
编程试试看。
b)定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
c)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。
自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。
从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。
如果不把vehicle设置为虚基类,会有什么问题?
编写程序定义基类Animal,成员变量age定义为私有的。
构造派生类dog,在其成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示:
errorC2248:
’age’:
cannotaccessprivatememberdeclaredinclass‘Animal’
把age改为公有成员变量后重新编译就可以了。
程序名为:
lab7_1.cpp
(2)编写程序定义一个基类BassClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。
lab7_2.cpp。
C++语序一个基类衍生出多个派生类,也允许一个派生类继承多个父类
派生类中可以调用父类的的Public和protect成员,但不能直接调用基类的private成员
对于构造函数,先调用父类的构造函数,在调用子类的。
析构函数的调用则相反
对于一个派生类有众多的基类是C++继承方面的一个特殊之处,别的面向对象语言像Java都是不允许的。
C++的这种允许有时的确方便我们编程。
Lab7_1
classAnimal{
public:
intage;
classdog:
publicAnimal{
intSetAge(intn){
age=n;
returnage;
dogd;
age=d.SetAge(3);
age="
age<
Lab7_2
classBaseClass{
intNumber;
BaseClass(){
这是父类的构造函数"
~BaseClass(){
这是父类的析构函数"
classDerivedClass:
publicBaseClass{
DerivedClass(inti=0){
这是子类的构造函数"
~DerivedClas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 报告