C++实验指导书修改版Word格式.docx
- 文档编号:17756528
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:35
- 大小:30.21KB
C++实验指导书修改版Word格式.docx
《C++实验指导书修改版Word格式.docx》由会员分享,可在线阅读,更多相关《C++实验指导书修改版Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 指导书 修改