C++实验指导书修改版Word格式.docx

上传人:b****6 文档编号:17756528 上传时间:2022-12-09 格式:DOCX 页数:35 大小:30.21KB
下载 相关 举报
C++实验指导书修改版Word格式.docx_第1页
第1页 / 共35页
C++实验指导书修改版Word格式.docx_第2页
第2页 / 共35页
C++实验指导书修改版Word格式.docx_第3页
第3页 / 共35页
C++实验指导书修改版Word格式.docx_第4页
第4页 / 共35页
C++实验指导书修改版Word格式.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C++实验指导书修改版Word格式.docx

《C++实验指导书修改版Word格式.docx》由会员分享,可在线阅读,更多相关《C++实验指导书修改版Word格式.docx(35页珍藏版)》请在冰豆网上搜索。

C++实验指导书修改版Word格式.docx

a,int&

b)

//这里访问与修改的是实际参数本身,而不是实际参数的一个副本

intmain()

intx,y;

x=66;

y=98;

swapbyValue(x,y);

cout<

<

"

x="

x<

y="

y<

endl;

swapbyAddress(&

x,&

y);

swapbyQuote(x,y);

return(0);

2.运行参考程序,理解带缺省形参值函数的用法。

//参考程序2

iostream.h>

math.h>

constdoublePI=3.14159;

floatarea(floata=3,doubleb=4,doublec=5);

{

doubles;

s=area();

s="

s<

s=area(6);

s=area(2,4);

s=area(5,6,7);

return0;

floatarea(floata,doubleb,doublec)

{floats,S;

s=1/2.0*(a+b+c);

S=sqrt(s*(s-a)*(s-b)*(s-c));

returnS;

3.运行参考程序,理解函数重载概念与基本使用方法。

//参考程序3

intmin(inta,intb,intc)

intk;

k=(a<

b)?

a:

b;

k=(k<

c)?

k:

c;

returnk;

intmin(inta,intb)

intx,y,z,m;

请输入三个整数:

;

cin>

>

x>

y>

z;

m=min(x,y,z);

最小的数是:

m<

\n"

请输入两个整数:

y;

m=min(x,y);

4.运行参考程序,理解函数模板概念与基本使用方法。

//参考程序4

template<

typenameT>

Tmin(Ta,Tb)

return(a<

最小的整数是:

min(x,y)<

floatx1,y1;

请输入两个实数:

x1>

y1;

最小的实数是:

min(x1,y1)<

5.编程计算圆台体积(要求上底和下底半径带默认形参值)。

(提示:

体积公式为

可附加页

6.用函数重载方法编写求面积程序,要求能计算圆、矩形、三角形面积。

7.应用函数模板求数组中的最大数,要求分别处理整型、浮点型数据。

8.建立一个简单的银行账户系统。

关于账户的信息有:

户名、账号、余额。

对账户的管理有:

开户、存款、取款、查询余额等功能。

用结构化程序设计方法设计一个程序,使该程序能对银行账户的信息进行上述操作管理。

参考程序框架(为简单起见,只考虑对一个账户信息进行管理):

conio.h>

//getch()要用到此头文件

stdlib.h>

//system("

cls"

)清屏函数用到此头文件

string.h>

//定义一个账户结构体

structAccount

{charmName[10];

longmSN;

floatmBalance;

};

//开户

voidgetAcc(structAccount*p)

请输入姓名、帐号、存入钱数:

姓名:

cin>

p->

mName;

帐号:

mSN;

存入钱数:

mBalance;

}

//往账户中存款,存款金额为amount

voiddeposit(structAccount*p)

floatamount;

存款金额:

amount;

p->

mBalance=p->

mBalance+amount;

//从账户中取款,取款金额为amount(请考虑透支情况)

voidwithdraw(structAccount*p)

//*****查询帐户当前余额*****

voidgetBalance(structAccount*p)

//主菜单

voidmenu(void)

{system("

);

//清屏

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"

简易银行帐户系统"

endl<

1:

开户"

2:

存款"

3:

取款"

4:

查询余额"

5:

退出"

//主函数

{intcho;

structAccountp;

//定义一个银行账户结构体变量

while

(1)

{menu();

do

{cout<

pleaseinputselection:

cin>

cho;

}while(cho<

1||cho>

5);

switch(cho)

{case1:

getAcc(&

p);

break;

case2:

deposit(&

case3:

withdraw(&

case4:

getBalance(&

break;

case5:

return0;

}

【思考题】

1.回答按值传递、按地址传递和按引用传递有何不同?

2.重载函数和函数模板有何区别?

什么情况下使用重载函数?

什么情况下使用函数模板?

实验二类程序设计实验

1.掌握类和对象的概念、定义和使用方法。

2.学习数据成员与成员函数的访问方式。

3.掌握构造函数、拷贝构造函数和析构函数的使用方法。

4.掌握类的组合使用方法。

5.熟悉类模板的定义和使用方法。

1.阅读下列程序,写出执行结果:

(1)#include<

classCircle

public:

Circle(floatradius)

{

Radius=radius;

cout<

构造函数被调用"

~Circle()

{cout<

析构函数被调用!

floatGetArea(){return3.14*Radius*Radius;

private:

floatRadius;

floatradius;

请输入圆的半径:

radius;

Circleobj(radius);

半径为"

radius<

圆的面积为:

obj.GetArea()<

}

(2)#include<

Circle(Circle&

p)

Radius=p.Radius;

拷贝构造函数被调用"

Circleobj1(radius);

Circleobj2(obj1);

对象1的面积为:

obj1.GetArea()<

对象2的面积为:

obj2.GetArea()<

(3)#include<

iostream>

usingnamespacestd;

classStudent

Student(intnum,char*n);

//构造函数

~Student();

//析构函数

voiddisplay();

intnumber;

//学号

char*name;

//姓名

Student:

:

Student(intnum,char*n)

number=num;

name=newchar[strlen(n)+1];

//用new为name分配堆内存

strcpy(name,n);

执行Student类构造函数"

~Student()

deletename;

执行Student类析构函数"

voidStudent:

display()

学号:

"

number<

姓名:

name<

intmain()

Studentstud1(2017001,"

John"

stud1.display();

2.设计一个银行账户(Account)类,包含户名、帐号以及当前余额属性,可完成开户、存款、取款和查询余额等行为。

银行账户类的定义如下:

classAccount

Account(charname[],longnum,floatamount);

//类的有参构造函数

Account();

//类的无参构造函数

voiddeposit(floatamount);

//往账户中存款

intwithdraw(floatamount);

//从账户中取款

floatgetBalance();

//查询余额

charmName[20];

//银行账户的户名

//本账户的帐号

//本账户当前的余额

请根据上述给定的类,完善其相应的构造函数及成员函数的定义,并执行主函数实现测试。

参考程序框架:

floatgetBalance();

//本账户当前的余额

//有参构造函数的实现

Account:

Account(charname[],longnum,floatamount)

strcpy(mName,name);

mSN=num;

mBalance=amount;

//类的无参构造函数

Account()

//存款

voidAccount:

deposit(floatamount)

mBalance=mBalance+amount;

//取款,考虑透支情况

intAccount:

withdraw(floatamount)

//查询余额

floatAccount:

getBalance()

简单银行帐户系统"

1.存款"

{intcho,m;

charname[20];

longnum;

请输入开户信息:

name;

num;

Accountp(name,num,amount);

//定义银行账户类对象

请输入选择:

4);

{

case1:

cin>

p.deposit(amount);

取款金额:

m=p.withdraw(amount);

if(m==0)

cout<

透支!

else

取款成功!

余额为:

p.getBalance()<

敲回车继续!

cin.sync();

//清空输入缓冲区的内容

cin.get();

//从指定的输入流中提取一个字符,防止屏幕一闪而过

3.设计一个股票(Stock)类,包含股票名称、股票代码、股票的数量、每股的价格、股票的总值等属性,可完成获得股票(用构造函数完成)、增持、卖出股票、更新股票价格、显示所持股票的信息等行为。

4.设计一个用于学生管理的Student类,属性有:

学号、年龄、性别、出生日期、身份证号等。

其中“出生日期”声明为一个“日期”类的内嵌子对象。

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

要求包括:

构造函数和析构函数、拷贝构造函数、组合。

5.设计复数类,实现复数的+、-、*、/运算。

(附加题)

1.C++语言中类和结构体类型有何异同?

2.什么时候程序会调用其构造函数?

3.什么时候程序会自动调用析构函数?

4.类的组合在什么情况下使用?

实验三数组与指针实验

1.学习使用数组数据对象。

2.掌握指针的使用方法。

3.学习通过动态内存分配实现动态数组的定义和使用,并体会指针在其中的作用。

4.掌握静态成员的使用方法。

5.练习通过Debug观察指针的内容及其所指对象的内容。

1.运行下列程序,观察运行结果。

(1)#include<

classArrayElem

intx;

ArrayElem(inti){x=i;

}//带参数的构造函数

intgetx(){returnx;

ArrayElemobs[4]={-1,-2,-3,-4};

//创建对象数组并初始化

for(inti=0;

i<

4;

i++)

obs["

].getx():

obs[i].getx()<

//访问数组元素的成员

(2)#include<

classNumClass

intnum;

voidset_num(intval){num=val;

voidshow_num(){cout<

Thenumis:

num<

NumClassob,*p;

//声明一个对象和指向对象的指针

ob.set_num(10);

ob.show_num();

//通过对象ob直接调用成员函数

p=&

ob;

//使对象指针p指向对象ob

set_num(20);

show_num();

//通过指针调用成员函数

(3)#include<

NumClassob[2],*p;

//声明一个对象数组和对象指针

ob[0].set_num(10);

ob[1].set_num(20);

//通过对象数组名和下标来访问

ob[0];

//将对象数组的首元素地址赋给指针

//通过指针显示数组元素

p++;

(4)#include<

NumClass*p=newNumClass[2];

//动态创建一个对象数组

p[0].set_num(10);

p[1].set_num(20);

//通过指针访问数组元素的成员

p

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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