c++程序的设计实验报告_第1页
c++程序的设计实验报告_第2页
c++程序的设计实验报告_第3页
c++程序的设计实验报告_第4页
c++程序的设计实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./C++程序设计实验报告:班级:学号:指导教师:实验一VC6.0环境入门与简单程序设计一、实验目的:1、熟悉VC++6.0开了环境并编写简单的C++程序。3、使用C++语言编写简单的输入输出程序。4、使用VC++6.0的DEBUG调试功能:单步执行、设置断点、观察变量值。二、实验容: 1、使用VC++建立一个标准C++程序,编译、运行如下程序:#include<iostream>Intmain<>{ Cout<<"HelloWorld!\n"; Cout<<"WelcometoC++!\n";} 2、编程计算图形的面积。程序可计算圆形、长方形、正方形等的面积,运行时首先提示用户选择图形类型,然后根据不同图形类型,输入相关参数计算其面积,并将其显示出来。#include<iostream>usingnamespacestd;voidcircle_area<>;voidrectangle_area<>;voidsquare_area<>;intmain<>{ inti; while<1> { cout<<"请输入图形类型〔1:圆形;2:长方形;3:正方形;4:退出。:"; cin>>i; switch<i> { case1:circle_area<>;break; case2:rectangle_area<>;break; case3:square_area<>;break; case4:return0; default:cout<<"输入错误!\n"; } }}voidcircle_area<>{floatr,s;cout<<"输入圆的半径:"; cin>>r;s=3.14*r*r;cout<<"该圆的面积是:"<<s<<endl; }voidrectangle_area<>{floata,b,s;cout<<"输入长方形的长和宽:"; cin>>a>>b;s=a*b;cout<<"该长方形的面积是:"<<s<<endl;}voidsquare_area<>{floata,s;cout<<"输入正方形的边长:"; cin>>a;s=a*a;cout<<"该正方形的面积是:"<<s<<endl;}实验二函数的应用一、实验目的:1、掌握函数的定义和调用方法。2、练习重载函数的使用。3、练习使用系统函数。4、学习使用VC++的DEBUG调试功能,使用STEPINTO追踪到函数的部。二、实验容:1、编写一个函数把华氏温度转换为摄氏温度,转换公式:C=<F-32>*5/9。#include<iostream>usingnamespacestd;voidWenDu<>;intmain<>{ WenDu<>; return0;}voidWenDu<>{doubles;doublef;cout<<"请输入华氏温度:";cin>>f;s=<<f-39>*5/9.0>;cout<<"摄氏温度为"<<s<<"度"<<endl;}2、编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。#include<iostream>usingnamespacestd;intMax1<inta,intb>;intMax1<inta,intb,intc>;doubleMax1<doublea,doubleb>;doubleMax1<doublea,doubleb,doublec>;intmain<>{ inta,b,c; doublex,y,z; cout<<"请输入两个整数:"; cin>>a>>b; cout<<"最大值是:"<<Max1<a,b><<endl; cout<<"请输入三个整数:"; cin>>a>>b>>c; cout<<"最大值是:"<<Max1<a,b,c><<endl; cout<<"请输入两个浮点数:"; cin>>x>>y; cout<<"最大值是:"<<Max1<x,y><<endl; cout<<"请输入三个浮点数:"; cin>>x>>y>>z; cout<<"最大值是:"<<Max1<x,y,z><<endl; return0;}intMax1<inta,intb>{ intt; if<a>b> t=a; elseif<b>a> t=b; returnt;}intMax1<inta,intb,intc>{ intt; if<a>b&&a>c> t=a; elseif<b>a&&b>c> t=b; elseif<c>a&&c>b> t=c; returnt;}doubleMax1<doublea,doubleb>{ doublet; if<a>b> t=a; elseif<b>a> t=b; returnt;}doubleMax1<doublea,doubleb,doublec>{ doublet; if<a>b&&a>c> t=a; elseif<b>a&&b>c> t=b; elseif<c>a&&c>b> t=c; returnt;}3、使用系统函数pow<x,y>计算XY的值,注意包含头文件math.h。#include<iostream>#include<math.h>usingnamespacestd;intmain<>{ intx,y; cout<<"输入x,y:"; cin>>x>>y; cout<<"x^y="<<pow<x,y><<endl;return0;}4、使用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。#include<iostream>usingnamespacestd;voidFibonacci<>;intmain<>{Fibonacci<>;return0;}voidFibonacci<>{inta,b,n,i,t;cout<<"请输入前两项:";cin>>a>>b;cout<<"请输入显示个数:";cin>>n;cout<<a<<" "<<b<<" ";for<i=2;i<n;i++>{t=a+b;cout<<t<<" ";a=b;b=t;if<<i+1>%5==0>cout<<endl;}cout<<endl;}实验三类与对象一、实验目的:1、掌握类与对象的声明和使用。2、观察构造函数与析构函数的执行过程。3、掌握具有不同访问属性的成员的访问方式。4、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。二、实验容: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>等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。#include<iostream>usingnamespacestd;classCPU{public: voidrun_cpu<>; voidstop_cpu<>; CPU<intfre,doublevol>; CPU<>; ~CPU<>; CPU<CPU&p>;private: intfre_cpu; doublevol_cpu; };classRAM{public: voidrun_ram<>; voidstop_ram<>; RAM<intfre,doublevol>; RAM<>; ~RAM<>; RAM<RAM&p>;private: intfre_ram; doublevol_ram;};classCUMPUTER{ friendclassCPU; friendclassRAM;public: voidrun_cum<>; voidstop_cum<>; CUMPUTER<>; CUMPUTER<CPUc,RAMr>; CUMPUTER<CUMPUTER&c>; ~CUMPUTER<>; private: CPUcpu; RAMram;};voidCPU::run_cpu<>{ cout<<"CPU运行"<<endl; cout<<fre_cpu<<","<<vol_cpu<<endl;}voidCPU::stop_cpu<>{ cout<<"CPU停止"<<endl;}CPU::CPU<>{ fre_cpu=0; vol_cpu=0; cout<<"CPU缺省样式构造函数调用完成"<<endl;}CPU::CPU<intfre,doublevol>{ fre_cpu=fre;vol_cpu=vol; cout<<"CPU构造函数调用完成"<<endl;}CPU::~CPU<>{ cout<<"CPU析构函数调用完成"<<endl;}CPU::CPU<CPU&p>{ fre_cpu=p.fre_cpu; vol_cpu=p.vol_cpu; cout<<"CPU拷贝构造函数调用完成"<<endl;}voidRAM::run_ram<>{ cout<<"RAM运行"<<endl; cout<<fre_ram<<","<<vol_ram<<endl;}voidRAM::stop_ram<>{ cout<<"RAM停止"<<endl;}RAM::RAM<>{ fre_ram=0; vol_ram=0; cout<<"RAM缺省样式构造函数调用完成"<<endl;}RAM::RAM<intfre,doublevol>{ fre_ram=fre; vol_ram=vol; cout<<"RAM构造函数调用完成"<<endl;}RAM::~RAM<>{ cout<<"RAM析构函数调用完成"<<endl;}RAM::RAM<RAM&p>{ fre_ram=p.fre_ram; vol_ram=p.vol_ram; cout<<"RAM拷贝构造函数调用完成"<<endl;}voidCUMPUTER::run_cum<>{ cout<<"cumputer运行"<<endl; cpu.run_cpu<>;ram.run_ram<>;}voidCUMPUTER::stop_cum<>{ cout<<"cumputer停止"<<endl; cpu.stop_cpu<>;ram.stop_ram<>;}CUMPUTER::CUMPUTER<CPUc,RAMr>:cpu<c>,ram<r>{ cout<<"CUMPUTER构造函数调用完成"<<endl;}CUMPUTER::CUMPUTER<CUMPUTER&c>{ cpu=c.cpu;ram=c.ram; cout<<"CUMPUTER拷贝构造函数调用完成"<<endl;}CUMPUTER::~CUMPUTER<>{ cout<<"CUMPUTER析构函数调用完成"<<endl;}intmain<>{ CPUc1<1,5.5>; CPUc2=c1; RAMr1<3,8.8>; RAMr2=r1; CUMPUTERcum1<c1,r1>; CUMPUTERcum2=cum1; c2.run_cpu<>; r2.run_ram<>; cum1.run_cum<>; cum1.stop_cum<>; cum2.run_cum<>; cum2.stop_cum<>; system<"pause">;}实验四C++程序结构一、实验目的:1、观察程序运行时变量的作用域、生存期和可见性。2、掌握类的静态成员的使用。3、学习多文件结构在C++程序中的使用。二、实验容:1、运行下面的程序,观察变量x、y的值。#include<iostream>usingnamespacestd;voidfn1<>;intx=1,y=2;intmain<>{ cout<<"Begin..."<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl; cout<<"Evaluatexandyinmain<>..."<<endl; intx=10,y=20;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl; cout<<"Stepintofn1<>..."<<endl;fn1<>;cout<<"Backinmain"<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;return0;}voidfn1<>{inty=200;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;}2、实现客户机<CLIENT>类。声明字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName<>改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。#include<iostream>usingnamespacestd;classClient{private: staticcharServerName[10]; staticintClientNum;public: Client<>; ~Client<>; static voidChangeServerName<>; voidshow<>;};intClient::ClientNum=0;charClient::ServerName[10]="abcd";voidClient::show<>{ cout<<"服务器名称是:"; cout<<ServerName<<endl; cout<<"客户数量是:"; cout<<ClientNum<<endl; cout<<endl;}voidClient::ChangeServerName<>{ cout<<"请输入服务器名称:"; cin>>ServerName;}Client::Client<>{ cout<<"客户已记录"<<endl; ClientNum++; }Client::~Client<>{ cout<<""<<endl; ClientNum--;}intmain<>{ Client::ChangeServerName<>; Clienta; a.show<>; Client::ChangeServerName<>; Clientb; b.show<>; Client::ChangeServerName<>; Clientc; c.show<>; system<"pause">;}实验五数组、指针与字符串一、实验目的:1、学习使用数组数据对象及字符串的组织与处理。2、学习使用标准C++库。3、掌握指针的使用方法,并通过DEBUG观察指针容及其所指的对象的容。4、练习通过动态存分配实现动态数组,并体会指针在其中的作用。二、实验容:1、编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。#include<iostream>usingnamespacestd;voidmain<>{ intJuZheng[3][3]={11,44,98,36,45,82,48,91,64}; inti,j; intNew[3][3]; for<i=0;i<3;i++> for<j=0;j<3;j++> { New[j][i]=JuZheng[i][j]; } cout<<"原矩阵是:"<<endl; for<i=0;i<3;i++> { for<j=0;j<3;j++> cout<<JuZheng[i][j]<<" "; cout<<endl; } cout<<"转置后矩阵是:"<<endl; for<i=0;i<3;i++> { for<j=0;j<3;j++> cout<<New[i][j]<<" "; cout<<endl; }}2、使用动态存分配生成动态数组来重新完成上题。#include<iostream>usingnamespacestd;intmain<>{ inttemp; int**a; a=newint*[3]; cout<<"输入数组元素:"<<endl; for<inti=0;i<3;i++> if<<a[i]=newint[3]>==NULL> exit<0>; for<i=0;i<3;i++> { for<intj=0;j<3;j++> cin>>a[i][j]; } //输出原数组 cout<<"原数组:"<<endl; for<i=0;i<3;i++> { for<intj=0;j<3;j++> cout<<""<<a[i][j]; cout<<endl; } for<i=0;i<3;i++> { for<intj=i;j<3;j++> { temp=a[j][i]; a[j][i]=a[i][j]; a[i][j]=temp; } } cout<<"转置后数组:"<<endl; for<i=0;i<3;i++> { for<intj=0;j<3;j++> cout<<""<<a[i][j]; cout<<endl; }}3、编程实现两字符串的连接。要求使用字符数组保存字符串,不允许使用系统函数。#include<iostream>usingnamespacestd;intmain<>{charstr1[40];charstr2[20];inti=0,j=0;cout<<"请输入第一个字符串:";cin>>str1;cout<<"请输入第二个字符串:";cin>>str2;while<str1[i]!='\0'>i++;while<str2[j]!='\0'>{str1[i]=str2[j];i++;j++;}str1[i]='\0';cout<<"连接后的字符串:"<<str1<<endl;}4、使用string类声明字符串对象,重新实现上一小题。#include<iostream>#include<string>usingnamespacestd;intmain<>{strings1;strings2;cout<<"请输入第一个字符串:";cin>>s1;cout<<"请输入第二个字符串:";cin>>s2;s1+=s2;cout<<"连接后的字符串为:"<<s1<<endl;return0;}实验六继承与派生一、实验目的:1、学习声明和使用类的继承关系,声明派生类。2、熟悉不同继承方式下对基类成员的访问控制。3、学习利用虚基类解决二义性问题。二、实验容:1、定义一个基类Animal,有私有数据成员变量age,构造其派生类dog,在其成员函数setAge<intn>中直接给Age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程测试一下。#include<iostream>usingnamespacestd;classAnimal{public: intage;};classDog:publicAnimal{public:SetAge<intn>{ age=n;cout<<"年纪是:"<<age<<endl;}};voidmain<>{ Dogdog; dog.SetAge<5>;}2、定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数的析构函数的执行情况。#include<iostream>usingnamespacestd;classBassClass{private: intNumber;public: BassClass<>; BassClass<intnum>;~BassClass<>; voidGetNum<> { cout<<"Thenumberis"<<Number<<endl; }};classDerivedClass:publicBassClass{public: DerivedClass<>:BassClass<> { cout<<"缺省样式构造函数调用完成"<<endl; } DerivedClass<intnum>:BassClass<num> {cout<<"带参数构造函数调用完成"<<endl; }; ~DerivedClass<> { cout<<"析构函数调用完成"<<endl; } voidGetNumner<> { GetNum<>; }};BassClass::BassClass<>{ Number=1;cout<<"缺省样式构造函数调用完成"<<endl;}BassClass::BassClass<intnum>{ Number=num; cout<<"带参数构造函数调用完成"<<endl;}BassClass::~BassClass<>{ cout<<"析构函数调用完成"<<endl;}voidmain<>{ BassClassb1; BassClassb2<3>; DerivedClassd1; DerivedClassd2<2>; b1.GetNum<>; b2.GetNum<>; d1.GetNumner<>; d2.GetNumner<>;}3、定义一个车<Vehicle>基类,具有MaxSpeed,Weight等成员变量,Run,Stop等成员函数,由此派生出自行车<bicycle>类、汽车<motorcar>类。自行车类有高度<height>等属性,汽车类有座位数<SeatNum>等属性。从bicycle和moorcar派生出摩托车<motorcycle>类,在继承过程中注意把vehicle设置为虚基类。如果不设为虚基类,会出现什么问题?编程测试一下。实验七多态性一、实验目的:1、掌握运算符重载的方法。2、掌握使用虚函数实现动态多态性。二、实验容:1、定义Point类,有坐标x,y两个成员变量;对Point类重载++、――运算符,实现对坐标值的改变。#include<iostream>usingnamespacestd;classPoint{public:Point<>{}Point<floata,floatb>{ x=a; y=b;}Pointoperator++<>{ x++; y++; returnPoint<x,y>;}Pointoperator--<>{ x--; y--; returnPoint<x,y>;}voiddisplay<>{ cout<<"<"<<x<<","<<y<<">"<<endl;}private: floatx; floaty;};voidmain<>{ Pointp<6,9>; cout<<"原来点的坐标:"; p.display<>; p++; cout<<"自加后点的坐标:"; p.display<>; p--; cout<<"再自减后点的坐标:"; p.display<>;}2、定义一个车<vehicle>基类,有Run、Stop等成员函数,由此派生出自行车类<biclcle>、汽车类<motorcar>,从bicycle和motorcar派生出摩托车类<motorcycle>,它们都有Run、Stop等成员函数。观察虚函数的作用。#include<iostream>usingnamespacestd;classVehicle{public: voidRun<> { cout<<"车启动了"<<endl; } voidStop<> { cout<<"车停止了"<<endl; }};classbicycle:publicVehicle{public: voidRun<> { cout<<"自行车启

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论