c++程序设计实验指导.docx
- 文档编号:25387270
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:37
- 大小:66.55KB
c++程序设计实验指导.docx
《c++程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《c++程序设计实验指导.docx(37页珍藏版)》请在冰豆网上搜索。
c++程序设计实验指导
《C++程序设计》实验指导
海南软件职业技术学院
HainanSoftwareProfessionInstitute
(2006-2007学年度第一学期)
教师姓名:
季文天
系部:
软件工程系
授课专业:
软件技术
授课班级:
05软件技术3班
目录
实验一:
VisualC++6.0开发环境2
实验二:
C++数据类型、表达式、语句、控制结构实验4
实验三:
函数实验5
实验四:
选择排序算符6
实验五:
设计一个栈类8
实验六:
公司雇员档案管理10
实验七:
计算函数的定积分13
实验八:
函数模板16
实验九:
类模板实例18
实验十:
插入与提取运算符重载实例20
实验十一:
文件操作实例22
实验一:
VisualC++6.0开发环境
一、实验目的:
1.掌握VisualC++6.0的启动和退出方法
2.熟悉选单的基本操作
3.掌握用应用程序向导创建一个控制台应用项目的方法
4.掌握源代码文件的新建、打开、保存和关闭等基本操作
5.掌握Visualc++6.0项目的编译、连接和执行
6.掌握代码简单语法错误修正和调试的一般过程
二、实验环境:
Windows2000Professional
VisualC++6.0Enterprise
三、实验内容
1、VisualC++开发环境
2、简单程序的调试
四、试验步骤:
1、从程序菜单启动VisualC++开发环境
2、认识VisualC++继承开发环境各菜单、窗口。
3、输入简单代码、编译、调试程序。
1.在“程序”表中选择MicrosoftVisualC++6.0,进入到VisualC++6.0的集成环境窗口。
2.在“File”菜单下选择“new”项(编一个新程序),出现“new”对话窗口。
3.在“new”窗口,点击“Projects”标签,在对话框中,选择“win32consoleApplication”(win32控制台应用);在“Projectsname”位置下输入项目名称,例如demo1(把我们的编程工作称为一个名为demo1的Project);在“Location”位置下,选择工作区空间(指定编程及运行中所生成的文件存放的的位置)的地址,就是确定新建的以demo1为名的工作区目录的地址,完成后按“OK”。
4.在下一对话窗口中,由用户选择项目类型,例如,可选择“Anemptyproject”完成后按“Finish”按纽。
5.进入编程环境窗口,窗口分为四部分:
上部:
菜单和工具条;中右:
视图区,是显示和编辑程序文件的操作区;中左:
工作区(workspace)显示窗口,这里显示工作中与项目相关的各种文件种类,工作区窗口可用View菜单关闭或打开;下部:
输出区,程序调试过程中,进行编译、链接、运行中输出的相关信息在这里显示,它也可由View菜单关闭或打开;
6.在上部的菜单中选择“Project/AddToProject/new”,出现对话框,点击“Files”,在出现的文件类型表中选择“C++SonrceFile”,填入项目名,“demo1”,源文件名“main”和工作区目录的位置路径,按“OK”回到主环境窗口;
7.在左侧的工作区,点“FileView”,打开demo1files:
SourceFile/main.cpp;
8.这时,右侧的视图区是空的,把program2-1(或其它源程序)输入其中;
9.在上方的“Build”菜单下,选“compilermain.app”,进行编译;查看下部output区的输出信息,如有出错信息,修改源程序重新编译;
10.编译通过后,在上方的“Build”菜单下,选“Builddemo.exe”,进行链接,如有出错信息,进行修改;
11.在“Build”菜单下,选“Executedemo.exe”运行程序,得到输出结果。
可使用下面代码:
#include
intmain(intargc,char*argv[])
{
cout<<”HelloC++World”< } 4、运行课本例1_1,1_2,1_3。 五、实验报告 依据本节实验内容书写实验报告,包括如下内容: (1)实验目的 (2)实验环境 (3)操作步骤 (4)遇到的问题及解决方法 (5)回答实验问题 (6)实验心得和体会 实验二: C++数据类型、表达式、语句、控制结构实验 一、实验目的: 1.掌握C++数据类型,熟悉定义变量、赋值得方法 2.学会使用C++的有关运算符以及相应的表达式 3.掌握cin和cout的输入、输出的方法,能正确使用各种格式转换 4.了解C++语言表示逻辑量的方法,熟练掌握if和switch语句 5.熟悉用while语句、do…while语句和for语句实现循环的方法 6.进一步掌握控制台应用项目的创建、编译方法 二、实验环境: Windows2000Professional VisualC++6.0Enterprise 三、实验内容 1、计算圆面积 2、设计一个简单的英文加密程序,加密规则如下,对每一个英文字母用该字母后面的第2个字母和这个字母本身进行异或运算,设置9个变量,分别存储字符串WeiXiong中的每一个字符,进行运算,检查输出结果和理论计算的结果是否一致。 四、试验步骤: 1、创建工程Program_2_1,输入下列代码 //program3-2.cpp #include voidmain() { constfloatpai=3.14; floatradius; cout<<"Enterradius: "; cin>>radius; floatarea=pai*radius*radius; cout<<"\nTheareaofcircleis"; cout< } 2、自行设计完成实验内容2。 五、实验报告 依据本节实验内容书写实验报告,包括如下内容: (1)实验目的 (2)实验环境 (3)操作步骤 (4)遇到的问题及解决方法 (5)回答实验问题 (6)实验心得和体会 实验三: 函数实验 一、实验目的: 1.了解函数的意义 2.熟悉并掌握函数的定义、调用 3.体会函数在面向结构程序设计中的地位 二、实验环境: Windows2000Professional VisualC++6.0Enterprise 三、实验内容 1、三次方根求根程序设计 四、试验步骤: 1、公式3.1 2、为了从系数p、q计算实根xr,把公式(3.1)的计算分解为下面几步: 1)令实数xr=A+B; 2)令实数A,B分别为实数R,S的立方根: 3)令R=-q/2+a,S=-q/2-a;(3.2) 4)令a=sqrt((q/2)*(q/2)+(q/3)*(q/3)*(q/3));(3.3) 实际的计算过程为: 用公式(5.3)计算得到a; 用公式(5.2)计算得到R和S; 求出R和S的立方根A和B; 最后得到实根xr。 3、设计函数实现求立方根。 4、完整的程序代码 #include<iostream.h> #include<math.h> floatcuberoot(float); voidmain(void) { floatp,q,xr; cout<<″Inputparametersp,q: ″; cin>>p>>q; floata=sqrt((q/2)*(q/2)+(q/3)*(q/3)*(q/3)); xr=cuberoot(-q/2+a)+cuberoot(-q/2-a); cout<<endl<<″Therealrootoftheequationis″<<xr; } floatcuberoot(floatx) { floatroot,croot; constfloateps=1e-6; croot=x; do{ root=croot; croot=(2*root+x/(root*root))/3; } while(fabs(croot-root)>eps); return(croot); } 五、实验报告 依据本节实验内容书写实验报告,包括如下内容: (1)实验目的 (2)实验环境 (3)操作步骤 (4)遇到的问题及解决方法 (5)回答实验问题 (6)实验心得和体会 实验四: 选择排序算符 一、实验目的: 1.熟悉并掌握指针的定义 2.学会使用指针 3.掌握排序算符的设计 二、实验环境: Windows2000Professional VisualC++6.0Enterprise 三、实验内容 1、排序算法的实现 四、试验步骤: 1、排序算法原理: 排序的任务是把已经存在一个数组里的n个数按从大到小的顺序排列,可以采用多种不同的方法实现,选择排序算法的思路简单,容易理解,每次总是从无序的序列中选出最大者,交换到序列的左端,于是,无序的序列越来越短,经过n-1步,达到排序的目的。 2、程序实现: #include #include #include voidssort(float*,int); voidmain(void){ inti,seed,n=20; cout< cin>>seed; cout< srand(seed); floatlist[20],*pf; for(i=0;i list[i]=rand(); cout< if((i+1)%8==0) cout< i=0;cout< pf=&list[0]; ssort(pf,n); while(i cout< i++; if(i%8==0) cout< } cout< } voidswap1(float*a,float*b){ floattemp; temp=*a; *a=*b; *b=temp; } voidssort(float*a,intm){ inti,j,index; floatelem; for(i=0;i elem=*(a+i); index=i; for(j=i+1;j if(*(a+j)>elem){ elem=*(a+j); index=j; } swap1(a+i,a+index); } } 五、实验报告 依据本节实验内容书写实验报告,包括如下内容: (1)实验目的 (2)实验环境 (3)操作步骤 (4)遇到的问题及解决方法 (5)回答实验问题 (6)实验心得和体会 实验五: 设计一个栈类 一、实验目的: 1.熟悉并掌握类的定义 2.掌握类的成员结构 3.掌握类的构造函数、析构函数 4.理解类和对象 二、实验环境: Windows2000Professional VisualC++6.0Enterprise 三、实验内容 1、设计一个栈类 四、试验步骤: 1、栈的原理 栈(stack)是程序设计过程中经常碰到的一种数据结构形式,它对于数据的存放和操作有下面这样的特点: (1)它只有一个对数据进行存入和取出的端口; (2)后进者先出,即最后被存入的数据将首先被取出。 其形式很像一种存储硬币的小容器,每次只可以从顶端压入一个硬币,而取出也只可从顶端进行,即后进先出。 2、程序代码: #include constintmaxsize=6; classstack{ floatdata[maxsize]; inttop; public: stack(void); ~stack(void); boolempty(void); voidpush(floata); floatpop(void); }; stack: : stack(void){ top=0; cout<<"stackinitialized."< } stack: : ~stack(void){ cout<<"stackdestroyed"< } boolstack: : empty(void){ returntop==0; } voidstack: : push(floata){ if(top==maxsize){ cout<<"Stackoverflow! "< return; } data[top]=a; top++; } floatstack: : pop(void){ if(top==0){ cout<<"Anemptystack! "< return0; } top--; returndata[top]; } voidmain(){ stacks1,s2; for(inti=1;i<=maxsize;i++) s1.push(2*i); for(i=1;i<=maxsize;i++) cout< for(i=1;i<=maxsize;i++) s1.push(2.5*i); for(i=1;i<=maxsize;i++) s2.push(s1.pop()); cout< do cout< while(! (s2.empty())); } 3、程序执行结果 stackinitialized. stackinitialized. 12108642 2.557.51012.515 stackdestroyed. stackdestroyed. 五、实验报告 依据本节实验内容书写实验报告,包括如下内容: (1)实验目的 (2)实验环境 (3)操作步骤 (4)遇到的问题及解决方法 (5)回答实验问题 (6)实验心得和体会 实验六: 公司雇员档案管理 一、实验目的: 1.熟悉并掌握继承与派生 2.掌握如何处理继承与派生类的关系 二、实验环境: Windows2000Professional VisualC++6.0Enterprise 三、实验内容 1、公司雇员档案管理 四、试验步骤: 1、公司雇员档案管理: 假设公司雇员分为: 雇员(employee)、经理(manager)、工程师(engineer)、高级主管(director)。 而且假定只关心这几类雇员各自的如下一些数据: employee(雇员)类: 姓名、年龄、工资; manager(经理)类: 姓名、年龄、工资、行政级别; engineer(工程师)类: 姓名、年龄、工资、专业、学位; director(高级主管)类: 姓名、年龄、工资、专业、学位、职务。 2、程序代码: #include #include classemployee{//自定义的employee类,它将作为其它几个类的基类 shortage; floatsalary; protected: char*name; public: employee(shortag,floatsa,char*na){//基类构造函数 age=ag; salary=sa; name=newchar[strlen(na)+1]; strcpy(name,na); } voidprint()const{ cout<<""< "; cout< "; cout< } ~employee(){delete[]name;} }; classmanager: publicemployee{//派生类manager intlevel;//行政级别 public: manager(shortag,floatsa,char*na,intlev) : employee(ag,sa,na){//派生类构造函数 level=lev; } voidprint()const{ employee: : print();//调用基类的print显示“共性”数据 //调用基类(父类)的公有函数成员print时要通过类名限定 cout<<"level: "< } }; classengineer: publicemployee{//派生类engineer charspeciality,adegree; /*分别表示专业: 'E'--电子,'M'--机械,'C'--计算机,'A'--自动化专业; 学位: 'O'--博士,'M'--硕士,'B'--学士,'N'--无学位*/ public: engineer(shortag,floatsa,char*na,charsp,charad) : employee(ag,sa,na){//派生类构造函数 speciality=sp; adegree=ad; } voidprint()const{ employee: : print();//调用基类print cout<<"speciality: "< cout<<"academicdegree: "< } }; enumptitle{PS,GM,VPS,VGM}; classdirector: publicmanager{//派生类director ptitlepost; public: director(shortag,floatsa,char*na,intlev,ptitlepo) : manager(ag,sa,na,lev){//派生类构造函数 post=po; } voidprint()const{ manager: : print(); cout<<"post: "< } }; voidmain(){//主函数,对所定义的类进行使用 employeeemp1(23,610.5,"zhang"),emp2(27,824.75,"zhao"); managerman1(32,812.45,"li",11),man2(34,1200.5,"cui",7); engineereng(26,1420.10,"meng",'E','M'); directordir(38,1800.2,"zhou",2,GM); emp1.print();//输出雇员emp1的有关全部信息 emp2.print();//输出雇员emp2的有关全部信息 man1.print();//输出管理人员man1的有关全部信息 man2.employee: : print();//调用基类的公有函数成员print //显示man2的有关雇员信息 eng.print();//输出工程师eng的有关全部信息 dir.print();//输出高级主管dir的有关全部信息 } 3、程序执行结果 zhang: 23: 610.5 zhao: 27: 824.75 li: 32: 812.45 level: 11 cui: 34: 1200.5 meng: 26: 1420.1 speciality: E academicdegree: M zhou: 38: 1800.2 level: 2 post: 1 五、实验报告 依据本节实验内容书写实验报告,包括如下内容: (1)实验目的 (2)实验环境 (3)操作步骤 (4)遇到的问题及解决方法 (5)回答实验问题 (6)实验心得和体会 实验七: 计算函数的定积分 一、实验目的: 1.熟悉并掌握虚函数 2.学会使用虚函数处理实际问题 二、实验环境: Windows2000Professional VisualC++6.0Enterprise 三、实验内容 1、计算函数的定积分 四、试验步骤: 1、要求: 假设函数f(x)=4/(1+x*x),求函数f(x)的定积分: 的值。 设计一个程序,计算定积分的近似值,可以有三种近似算法供选择,它们都须首先把区间[a,b]分成n个等份,于是每一小段h=(b-a)/n,函数f(x)的自变量将顺序取为: a,a+h,a+2h,⋯⋯,a+(n-1)h,a+nh=b,共有n+1个点。 矩形法积分近似计算公式为: sum=(f(a)+f(a+h)+f(a+2h)+⋯⋯+f(a+(n-1)h))h 梯形积分计算公式为: sum=(f(a)+2f(a+h)+2f(a+2h)+⋯⋯+2f(a+(n-1)h)+f(b))h/2 simpson法积分公式为: sum=(f(a)+4f(a+h)+2f(a+2h)+4f(a+3h)+2f(a+4h)+⋯⋯+2f(a+ (n-2)h+4f(a+(n-1)h)+f(b))h/3 2、程序代码: #include floatfunction(floatx){//欲积分的函数 return4.0/(1+x*x); } classinte_algo{//基类inte_algo protected: floata,b;//a,b为积分区间的左右边界 intn;//n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 实验 指导