南昌大学C高级语言程序设计实验报告Word格式.doc
《南昌大学C高级语言程序设计实验报告Word格式.doc》由会员分享,可在线阅读,更多相关《南昌大学C高级语言程序设计实验报告Word格式.doc(31页珍藏版)》请在冰点文库上搜索。
1.分析下面程序的输出结果:
2.建立一个被称为sroot()的函数,返回其参数的二次根。
重载sroot()三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt())。
3.编写C++风格的程序,解决百钱问题,将1元人民币兑换成1,2,5分的硬币,有多少种换法
六、实验数据及处理结果
#include<
iostream.h>
int&
f(int&
i)
{i+=10;
returni;
}
voidmain()
{intk=0;
int&
m=f(k);
cout<
<
k<
endl;
m=20;
2.建立一个被称为sroot()的函数,返回其参数的二次根。
iostream>
math.h>
usingnamespacestd;
intsroot(inti)
{return(int)sqrt(i);
}
floatsroot(floatf)
{return(float)sqrt(f);
doublesroot(doubled)
{return(double)sqrt(d);
intmain()
{inti;
floatf;
doubled;
cout<
"
输入整型参数i="
;
cin>
>
i;
输入长整参数f="
f;
输入双精度参数d="
d;
整型参数i的二次根="
sroot(i)<
长整参数f的二次根="
sroot(f)<
双精度参数d的二次根="
sroot(d)<
3.编写C++风格的程序,解决百钱问题,将1元人民币兑换成1,2,5分的硬币,有多少种换法?
intmain()
{
inti,j,k;
intsum=0;
for(i=0;
i<
=100;
i++)
for(j=0;
j<
=50;
j++)
for(k=0;
=20;
k++)
if(i*1+2*j+5*k==100)
cout<
一分:
两分:
五分:
sum++;
}}
cout<
总数为:
sum<
七、思考讨论题或体会或对改进实验的建议
八、参考资料
《C++语言程序设计学生用书》清华大学出版社郑莉等
实验二.函数的应用和类的基本构造
1.熟悉C++程序类定义的一般形式。
2.熟悉C++程序对象的定义,对象的使用。
3.构造函数与析构函数的定义
五、实验步骤(要求运行结果的屏幕截图,源程序电子打包提交)
1.运行下面的程序,并说明运行结果为什么?
。
classexample
{public:
example(intn)
{i=n;
构造函数\n"
~example()
{cout<
析构函数\n"
intget_i()
{returni;
private:
inti;
};
intsqr_it(exampleo)
{cout<
调用sqr_it开始\n"
returno.get_i()*o.get_i();
voidmain()
{examplex(10);
x.get_i()<
sqr_it(x)<
调用sqr_it结束\n"
2.建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。
用类cylinder计算圆柱体的体积,并存储在一个double变量中。
在类cylinder中包含一个成员函数vol(),用来显示每个cylinder对象的体积。
classcylinder{
doublev;
public:
cylinder(doubler,doubleh)
{v=(3.14*r*r)*h;
cout<
圆柱体的半径r为:
r<
\n"
圆柱体的高度h为:
h<
voidvol()
{cout<
圆柱体的体积v是:
v<
main()
doubler,h;
输入圆柱体的半径r:
r;
输入圆柱体的高度h:
h;
cylinderobj(r,h);
obj.vol();
《高级语言C++程序设计试验指导》高等教育出版社周玉龙南昌大学实验报告
实验三.数组、指针、字符串
1.熟悉C++中数组、指针和字符串的特点和应用。
五、实验步骤(要求给出简单类图、运行结果的屏幕截图,源程序电子打包提交)
1.构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。
显示每个对象的qu*price值。
2.通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值.
1.构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。
classbook{
intqu,price;
book(intq)
{qu=q;
price=10*q;
intget_qu()
{returnqu;
intget_price()
{returnprice;
intmain()
{bookobj[5]={1,2,3,4,5};
for(inti=0;
5;
{
cout<
数组对象"
i+1<
的qu*price值为:
obj[i].get_qu()*obj[i].get_price()<
}
2.通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值.
}};
book*p;
p=&
obj[4];
for(inti=5;
i>
0;
i--)
p->
get_qu()*p->
get_price()<
p--;
实验四.继承与派生
1.熟悉派生类的声明。
2.派生类的构造函数与析构函数的定义。
3.继承的方式。
1.下面的程序包含了Time类和Date类的声明,要求设计一个Brithtime类,它继承了Time类和Date类,并且还有一项出生孩子的名字Childname,同时设计主程序显示一个小孩的出生时间和名字。
string.h>
classTime{
protected:
inthours,minutes,seconds;
Time(inth,intm,ints)
{hours=h;
minutes=m;
seconds=s;
virtualvoiddisplay()
hours<
:
minutes<
seconds<
}
classDate{
intmonth,day,year;
public:
Date(intm,intd,inty)
{month=m;
day=d;
year=y;
{cout<
month<
/"
day<
year<
2.建立普通的基类buliding,用来存储一座楼房的层数、房间数以及它的总平方米数。
建立派生类house,继承building,并存储下面的内容:
卧室与浴室的数量。
另外,建立派生类office,继承building,并存储灭火器与电话的数目。
}
classBrithtime:
publicTime,publicDate{
char*Childname;
Brithtime(intm,intd,inty,inth,intmin,ints,char*p):
Date(m,d,y),Time(h,min,s)
{Childname=newchar[strlen(p)+1];
strcpy(Childname,p);
}
voiddisplay()
{cout<
姓名:
Childname<
Date:
display();
Time:
main()
{
intm,d,y,h,min,s;
charp[20];
cout<
scanf("
%s"
&
p);
cout<
输入出生年月日:
cin>
y>
m>
输入出生时分秒:
h>
min>
s;
Brithtimeob(m,d,y,h,min,s,p);
ob.display();
classbuilding{
protected:
intfr;
intr;
doublem;
public:
building(inta,intb,doublex)
{fr=a;
r=b;
m=x;
classhouse:
publicbuilding{
private:
intbr;
intdr;
public:
house(inta,intb,doublex,intc,intd):
building(a,b,x)
{br=c;
dr=d;
voidshow()
{cout<
"
楼房层数:
fr<
cout<
房间数:
楼房总面积:
m<
卧室数量:
br<
浴室数量:
dr<
}
classoffic:
intmr;
inttr;
offic(inta,intb,doublex,intc,intd):
{mr=c;
tr=d;
灭火器数量:
mr<
电话数量:
tr<
main()
{
intfr;
intr;
doublem;
intbr;
intdr;
intmr;
inttr;
cout<
输入楼房层数:
cin>
fr;
输入房间数:
r;
总平方米数:
m;
卧室数量:
br;
浴室数量:
dr;
灭火器数量:
mr;
电话数量:
tr;
buildingob1(fr,r,m);
houseob2(fr,r,m,br,dr);
officob3(fr,r,m,mr,tr);
住宅楼"
ob2.show();
\n办公大楼"
ob3.show();
实验五.多态与模板
1.熟悉函数(成员函数)的重载。
2.熟悉运算符重载。
3.了解虚函数、纯虚函数和抽象类。
4.函数模板与模板函数。
5
5.类模板和模板类。