《面向对象程序设计 C++》实验报告.docx

上传人:b****5 文档编号:4442789 上传时间:2022-12-01 格式:DOCX 页数:61 大小:120.21KB
下载 相关 举报
《面向对象程序设计 C++》实验报告.docx_第1页
第1页 / 共61页
《面向对象程序设计 C++》实验报告.docx_第2页
第2页 / 共61页
《面向对象程序设计 C++》实验报告.docx_第3页
第3页 / 共61页
《面向对象程序设计 C++》实验报告.docx_第4页
第4页 / 共61页
《面向对象程序设计 C++》实验报告.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

《面向对象程序设计 C++》实验报告.docx

《《面向对象程序设计 C++》实验报告.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计 C++》实验报告.docx(61页珍藏版)》请在冰豆网上搜索。

《面向对象程序设计 C++》实验报告.docx

《面向对象程序设计C++》实验报告

《面向对象程序设计》实验教学大纲

实验学时:

32

实验个数:

13

实验学分:

1

课程性质:

专业必修课

适用专业:

软件工程

教材及参考书:

1.《C++语言程序设计习题与实验指导》,郑莉、傅仕星编著,北京:

清华大学出版社,2004

2.《C++语言程序设计(第三版)》,郑莉、董渊编著,北京:

清华大学出版社,2005

大纲执笔人:

李晓宁

大纲审定人:

刘芳、苟仕蓉、左友东

一、实验课的性质与任务

本课程实验大纲是面向计算机专业学生开设的《C++程序设计》实验课计划指导大纲,是依据《面向对象程序设计》课程教学计划指导大纲编制。

本课程主要讲述了利用C++进行程序设计的思想和方法,既有面向过程和面向对象的程序设计的理论知识,又包括极强的实践应用能力的培养。

本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解和掌握如何利用C++程序设计语言进行程序设计,提高学生的动手能力,做到理论和实践相结合,培养学生理解,分析程序,编写,调试程序的能力,使之能把程序设计应用到今后的专业学习中。

二、实验课程目的与要求

1.实验目的:

通过本课程的学习,使学生掌握面向过程的程序设计思想和编程思路,初步掌握面向对象的程序设计思想,学会调试程序,能独立编写实用的小型程序。

2.实验要求:

1)学生应该自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯;

2)应独立完成所布置习题。

为保证尽量在统一安排的上机时间内编译运行通过程序,学生应事先设计好程序。

三、实验项目及内容提要

面向对象程序设计实验课程

序号

实验项目编号

实验名称

学时

必做

选做

学分数

实验类型

内容提要

基本操作

验证

综合

设计

1

VisualC++开发环境入门

2

熟悉VC++开发环境

2

C++简单程序设计

4

基本算法结构

3

函数的应用

2

函数设计、模板函数

4

类与对象

6

类的设计与使用

5

C++程序的结构

2

作用域与生存期,静态成员

6

数组、指针与字符串

4

三种常见编程元素的使用

7

继承与派生

6

派生类的设计与使用

8

多态性

2

运算符重载、动态多态

9

群体类和群体数据的组织

4

群体类的设计

10

泛型程序设计与C++标准模板库

2

STL库的使用

11

十一

流内库与输入、输出

2

常用输入输出方法

12

十二

异常处理

2

异常处理机制的设计

13

十三

Windows应用程序框架

2

VC开发Windows程序方法

四、实验内容安排:

实验一VisualC++6.0开发环境应用入门

(验证性实验2学时)

1.目的要求:

了解VisualC++6.0的特点,熟悉了解VisualC++6.0的开发环境,学习使用VisualC++6.0编写标准的C++控制台应用程序。

2.实验内容:

使用VisualC++来建立一个非图形化的标准C++程序,编译、运行教材中的例3-3,用公式法求解PI的数值,并尝试利用其他方法求解并获得相同的结果。

π=16arctan(1/5)-4arctan(1/239)

arctan(x)=x-x³/3+x5/5-x7/7+…求π=?

 

#include

usingnamespacestd;

intmain()

{

doublea,b;

doublearctan(doublex);

a=16.0*arctan(1/5.0);

b=4.o*aarctan(1/239.0);

cout<<”PI=”<

}

doublearctan(doublex)

{

inti;

doubler,ef,sqr;

sqr=x*x;

r=0;

e=x;

i=1;

while(e/i>1e-15)

{

f=e/I;

r=(i%4==1)?

r+f:

r-f;

e=e*sqr;

I+=2;

}

returnr;

}

#include

#include

main()

{

ints=1;

floatn=1,t=1,pi=0;

while(fabs(t)1e-4)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("%d",pi);

}

 1

3.主要仪器设备及软件:

PC+Windows2000+VC6.0

实验二C++简单程序设计实验

(验证性实验4学时)

4.目的要求:

会编写简单的C++程序;复习基本数据类型变量和常量的应用;复习运算符与表达式的应用;复习结构化程序设计基本控制结构的应用;复习自定义数据类型的应用;练习使用简单的输入输出;观察头文件的作用;学会使用VC6.0开发环境中的debug调试功能;熟练程序设计中的技巧;

5.实验内容:

3)给定一个字符变量输出其二进制形式。

例如chara=’a’;其二进制为00100001。

#include

usingnamespacestd;

intmain()

{

charch;

intj,k[8]={0};

cout<<"请输入一个字符:

"<

cin>>ch;

for(j=0;j<=7;j++)

{

if(ch)

{

if(ch%2==0)

k[j]=0;

else

k[j]=1;

ch=(ch-(ch%2))/2;

}

}

for(j=7;j>=0;j--)

{

cout<

}

cout<

}

4)给定一个字符变量输出其二进制反转形式。

例如chara=’a’;其二进制为00100001,反转形式为10000100。

(提示:

使用位运算)

#include

usingnamespacestd;

intmain()

{

charch;

intj,k[8]={0};

cout<<"请输入一个字符:

"<

cin>>ch;

for(j=0;j<=7;j++)

{

if(ch)

{

if(ch%2==0)

k[j]=0;

else

k[j]=1;

ch=(ch-(ch%2))/2;

}

}

cout<

";

for(j=7;j>=0;j--)

{

cout<

}

cout<

for(j=0;j<=7;j++)

{

k[j]=k[j]^1;

}

cout<<"二进制反码是:

";

for(j=7;j>=0;j--)

{

cout<

}

cout<

}

5)袋子里有红,黄,蓝,绿,黑五种不同颜色的球若干个,从中取出三个不同颜色的球,编程输出每种取法及统计不同取法的总数(提示:

使用枚举)

#include

enumcolor{red=0,yellow,blue,green,black};

boolisNum(inti)

{

intj=0;

for(intk=0;k<6;k++)if(i>>k&1==1)j++;

returnj==3?

true:

false;

}

voidprintResult(inti)

{

for(intk=0;k<5;k++)

{

if(i>>k&1==1)

switch(k)

{

casered:

printf("red");

break;

caseyellow:

printf("yellow");

break;

caseblue:

printf("blue");

break;

casegreen:

printf("green");

break;

caseblack:

printf("black");

break;

default:

printf("error!

!

");

break;

}

}

printf("\n");

}

voidmain()

{

intj=0;

printf("可能的方案有:

\n");

for(inti=0;i<=32;i++)

{

if(isNum(i))

{

printResult(i);

j++;

}

}

6)(选做)给定一个整型变量输出其二进制形式。

6.主要仪器设备及软件:

PC+Windows2000+VC6.0

实验三函数的应用实验

(设计性实验2学时)

7.目的要求:

掌握函数的定义和调用方法;练习重载函数的使用;练习使用系统函数;学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。

8.实验内容:

7)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。

#include

usingnamespacestd;

intFibonacci(inti)

{

if(i==1)

return0;

else

{

if(i==2)

return1;

else

returnFibonacci(i-1)+Fibonacci(i-2);

}

}

intmain()

{

intn,j,i;

cin>>n;

for(i=1;i<=n;i++)

{

j=Fibonacci(i);

cout<

}

}

8)编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。

#include

usingnamespacestd;

intMAX1(inta,intb)

{

if(a>=b)

returna;

else

returnb;

}

intMAX1(inta,intb,intc)

{

if(a>=b)

{

if(a<=c)

returnc;

else

returna;

}

else

{

if(b<=c)

returnc;

else

returnb;

}

}

doubleMAX1(doublea,doubleb)

{

if(a>=b)

returna;

else

returnb;

}

doubleMAX1(doublea,doubleb,doublec)

{

if(a>=b)

{

if(a<=c)

returnc;

else

returna;

}

else

{

if(b<=c)

returnc;

else

returnb;

}

}

intmain()

{

inta,b,c;

doublei,j,k;

cout<<"请输入两个整数"<

cin>>a>>b;

cout<<"最大的数"<

cout<<"请输入三个整数"<

cin>>a>>b>>c;

cout<<"最大的数是"<

cout<<"请输入两个小数"<

cin>>i>>j;

cout<<"最大的数是"<

cout<<"请输入三个小数"<

cin>>i>>j>>k;

cout<<"最大的数是"<

 

}

9)写一个函数,能够接收身高、体重等数据,能够根据身高、体重检测身体状况,胖,瘦等。

#include

usingnamespacestd;

voidSHENGC(doublei,doublej)

{

if(i

cout<<"这个人偏胖"<

else

{if(i=j*32)

cout<<"这个人适中"<

else

cout<<"这个人偏瘦"<

}

}

intmain()

{

doublei,j;

cout<<"请输入身高(cm)和体重(kg)"<

cin>>i>>j;

SHENGC(i,j);

}

9.主要仪器设备及软件:

PC+Windows2000+VC6.0

实验四类与对象实验

(设计性实验4学时)

10.目的要求:

掌握类的定义和使用;掌握类对象的声明;复习具有不同访问属性的成员的访问方式;观察构造函数和析构函数的执行过程;学习类组合使用方法;使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

11.实验内容:

10)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。

观察构造函数和析构函数的调用顺序。

#include

usingnamespacestd;

enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};

classCPU

{

public:

CPU();

~CPU();

voidrun(enumCPU_Rankr,intf,doublev);

voidstop();

private:

enumCPU_RankRank;

intfrequency;

doublevoltage;

};

CPU:

:

CPU()

{

cout<<"调用构造函数"<

}

CPU:

:

~CPU()

{

cout<<"调研析构函数"<

}

voidCPU:

:

run(enumCPU_Rankr,intf,doublev)

{

Rank=r;

frequency=f;

voltage=v;

}

voidCPU:

:

stop()

{

cout<

cout<

cout<

}

intmain()

{

enumCPU_Rankt=P1;

CPUc;

c.run(t,2,4.865);

c.stop();

}

 

11)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。

cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,观察这些类的构造函数和析构函数的调用顺序。

#include

usingnamespacestd;

classCPU

{

public:

CPU()

{

cout<<"CPU构造函数被调用"<

}

~CPU()

{

cout<<"CPU析构函数被调用"<

}

};

classRAM

{

public:

RAM()

{

cout<<"RAM构造函数被调用”<

}

~RAM()

{

cout<<"RAM析构函数被调用"<

}

};

classCDROM

{

public:

CDROM()

{

cout<<"CDROM构造函数被调用"<

}

~CDROM()

{

cout<<"CDROM析构函数被调用"<

}

};

classComputer

{

private:

CPUcpu;

RAMram;

CDROMcdrom;

public:

Computer()

{

cout<<"Computer构造函数被调用"<

}

~Computer()

{

cout<<"Computer析构函数被调用"<

}

voidrun();

voidstop();

};

 

intmain()

{

ComputerC;

}

 

12)定义一个Body类,拥有身高、体重等数据,能够根据身高、体重检测身体状况,要求设计相应的函数成员和构造函数。

#include

usingnamespacestd;

classbody

{

public:

body()

{

cout<<"构造函数被调用"<

}

~body()

{

cout<<"析构函数被调用"<

}

voidset(doubleh,doublew)

{

HIGH=h;

WEIGHT=w;

}

voidshow()

{

cout<<"HIGH="<

cout<<"WEIGHT="<

}

private:

doubleHIGH;

doubleWEIGHT;

};

intmain()

{

doublei,j;

bodya;

cout<<"请输入身高(cm)和体重(kg)"<

cin>>i>>j;

a.set(i,j);

a.show();

}

13)(选做)设计一个用于人事管理的People(人员)类。

考虑到通用性,这里只抽象出所有类型人员都具有的属性:

number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。

其中“出生日期”定义一个“日期”类内嵌子对象。

用成员函数实现对人员信息录入和显示。

要求包括:

构造函数和析构函数、拷贝构造函数、内联成员函数、类组合。

12.主要仪器设备及软件:

PC+Windows2000+VC6.0

实验五C++程序的结构实验

(设计性实验2学时)

13.目的要求:

观察程序运行中变量的作用域、生存期和可见性;学习类的静态成员的使用;学习多文件结构在C++程序中的使用。

14.实验内容:

14)运行下面的程序,观察变量X、Y的值。

(删除)

//lab5_1.cpp

#include

voidfnl();

intx=1,y=2;

intmain()

{

cout<<”Begin…”<

cout<<”x=”<

cout<<”y=”<

cout<<”Evaluatexandyinmain()…”<

intx=10,y=20;

cout<<”x=”<

cout<<”y=”<

cout<<”Stepintofnl()…”<

fnl();

cout<<”Backinmain”<

cout<<”x=”<

cout<<”y=”<

return0;

}

voidfnl()

{

inty=200;

cout<<”x=”<

cout<<”y=”<

}

15)实现客户机(CLIENT)类。

定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。

在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。

(需要给出main函数代码和运行结果)

//cilent.h

#include

usingnamespacestd;

classClient

{

private:

staticcharSeverName[10];

staticintClientnum;

public:

Client()

{

cout<<"Client构造函数被调用"<

Clientnum++;

}

~Client()

{

cout<<"Client析构函数被调用"<

Clientnum--;

}

staticvoidChangeServername()

{

inti;

cout<<"请输入服务器的名字:

"<

cin>>SeverName;

}

voidshow();

};

intClient:

:

Clientnum=0;

charClient:

:

SeverName[10]="abcd";

//Client.cpp

voidClient:

:

show()

{

cout<<"该用户机的服务器端名字是:

"<

cout<

cout<<"用户数量有:

"<

cout<

}

//Client.exe

voidmain()

{

Client:

:

ChangeServername();

Client

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

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1