c面向对象程序设计习题解答与上机指导第二版源程序Word文件下载.docx
- 文档编号:21416213
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:103
- 大小:42.48KB
c面向对象程序设计习题解答与上机指导第二版源程序Word文件下载.docx
《c面向对象程序设计习题解答与上机指导第二版源程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《c面向对象程序设计习题解答与上机指导第二版源程序Word文件下载.docx(103页珍藏版)》请在冰豆网上搜索。
cout<
<
;
cin>
>
b;
{cout<
}
Thelowestcommondenominatoris"
endl<
d;
【2.24】写出下列程序的运行结果。
inti=15;
{inti;
i=100;
:
:
i=i+1;
i<
endl;
运行结果:
101
Pleaseanykeytocontinue。
【2.25】写出下列程序的运行结果。
voidf(int&
m,intn)
{inttemp;
temp=m;
m=n;
n=temp;
{inta=5,b=10;
f(a,b);
a<
"
b<
结果:
1010
【2.26】分析下面程序的输出结果。
int&
f(int&
i)
{i+=10;
returni;
{intk=0;
int&
m=f(k);
cout<
k<
m=20;
10
20
【2.27】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中。
【解】实现本题功能的程序如下:
{int*p=newint[20];
//动态分配20个整型内存空间
*p=1;
*(p+1)=1;
//对前面2个内存空间赋值1
*p<
\t"
*(p+1)<
p=p+2;
//p指向第3个内存空间
for(inti=3;
=20;
i++)
{*p=*(p-1)+*(p-2);
if(i%5==0)cout<
p++;
//p指向下一个内存空间;
return0;
【2.28】编写一个C++风格的程序,建立一个被称为sroot的函数,返回其参数的二次方根。
重载函数sroot三次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数sqrt)。
cmath>
doublesroot(inti)
{returnsqrt(i);
doublesroot(longl)
{returnsqrt(l);
doublesroot(doubled)
{returnsqrt(d);
{inti=12;
longl=1234;
doubled=12.34;
cout<
i的二次方根是:
sroot(i)<
l的二次方根是:
sroot(l)<
d的二次方根是:
sroot(d)<
【2.29】编写一个C++风格的程序,解决百钱问题:
将一元人民币兑换成1、2、5分的硬币,有多少种换法?
{inti,j,sum=0;
for(i=0;
for(j=0;
j<
=50;
j++)
if(100-5*i-2*j>
=0)
{sum++;
cout<
100-5*i-2*j<
sumis"
sum<
【2.30】编写一个C++风格的程序,输入两个整数,将它们按由小到大的顺序输出。
要求使用变量的引用。
{voidchange(int&
int&
inta,b;
a>
if(a>
b)change(a,b);
voidchange(int&
a1,int&
b1)
temp=a1;
a1=b1;
b1=temp;
【2.31】编写C++风格的程序,用二分法求解f(x)=0的根。
#include<
inlinefloatf(floatx)
{return2*x*x*x-4*x*x+3*x-6;
{floatleft,right,middle,ym,yl,yr;
pleasetwonumber:
//接收输入,确定第一组数据区域
cin>
left>
right;
yl=f(left);
yr=f(right);
do
{middle=(right+left)/2;
ym=f(middle);
if(yr*ym>
0)
{right=middle;
yr=ym;
else
{left=middle;
yl=ym;
}while(fabs(ym)>
=1e-6);
\nRootis:
middle;
第3章类和对象
(一)
【3.18】写出下面程序的运行结果。
classtest
{public:
test();
~test(){};
private:
inti;
};
test:
test()
{i=25;
for(intctr=0;
ctr<
10;
ctr++)
{cout<
Countingat"
ctr<
\n"
}
testanObject;
{return0;
【3.19】写出下面程序的运行结果。
classTest{
intval;
public:
Test()
default."
Test(intn)
{val=n;
Con."
Test(constTest&
t)
{val=t.val;
Copycon."
{Testt1(6);
Testt2=t1;
Testt3;
t3=t1;
return0;
【3.20】指出下列程序中的错误,并说明为什么。
classStudent{
public:
voidprintStu();
private:
charname[10];
intage;
floataver;
{Studentp1,p2,p3;
p1.age=30;
…
【3.21】指出下列程序中的错误,并说明为什么。
intsno;
voidsetSno(intd);
voidprintStu()
{cout<
\nSnois"
sno<
"
ageis"
age<
."
voidsetSno(ints)
{sno=s;
voidsetAge(inta)
{age=a;
{Studentlin;
lin.setSno(20021);
lin.setAge(20);
lin.printStu();
【3.22】指出下列程序中的错误,并说明为什么。
classPoint{
intx,y;
private:
Point()
{x=1;
y=2;
{Pointcpoint;
cpoint.x=2;
【3.23】下面是一个计算器类的定义,请完成该类成员函数的实现。
classcounter{
counter(intnumber);
voidincrement();
//给原值加1
voiddecrement();
//给原值减1
intgetvalue();
//取得计数器值
intprint();
//显示计数
intvalue;
classcounter{
counter(intnumber);
voidincrement();
voiddecrement();
intgetvalue();
counter:
counter(intnumber)
{value=number;
voidcounter:
increment()
{value++;
decrement()
{value--;
intcounter:
getvalue()
{returnvalue;
print()
valueis"
value<
【3.24】根据注释语句的提示,实现类Date的成员函数。
classDate{
voidprintDate();
//显示日期
voidsetDay(intd);
//设置日的值
voidsetMonth(intm);
//设置月的值
voidsetYear(inty);
//设置年的值
intday,month,year;
{DatetestDay;
testDay.setDay(5);
testDay.setMonth(10);
testDay.setYear(2003);
testDay.printDate();
voidDate:
printDate()
\nDateis"
day<
month<
year<
setDay(intd)
{day=d;
setMonth(intm)
{month=m;
setYear(inty)
{year=y;
【3.25】建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。
用类cylinder计算圆柱体的体积,并存储在一个double变量中。
在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。
classcylinder{
cylinder(doublea,doubleb);
voidvol();
doubler,h;
doublevolume;
cylinder:
cylinder(doublea,doubleb)
{r=a;
h=b;
volume=3.141592*r*r*h;
voidcylinder:
vol()
volumeis:
volume<
{cylinderx(2.2,8.09);
x.vol();
【3.26】构建一个类Stock,含字符数组stockcode[]及整型数据成员quan、双精度型数据成员price。
构造函数含3个参数:
字符数组na[]及q、p。
当定义Stock的类对象时,将对象的第1个字符串参数赋给数据成员stockcode,第2和第3个参数分别赋给quan、price。
未设置第2和第3个参数时,quan的值为1000,price的值为8.98。
成员函数print没有形参,需使用this指针,显示对象数据成员的内容。
假设类Stoc第1个对象的三个参数分别为:
600001"
3000和5.67,第2个对象的第1个数据成员的值是"
第2和3数据成员的值取默认值。
要求编写程序分别显示这两个对象数据成员的值。
【解】实现本题功能的程序如下:
constintSIZE=80;
classStock{
Stock()
{strcpy(stockcode,"
Stock(charcode[],intq=1000,doublep=8.98)
{strcpy(stockcode,code);
quan=q;
price=p;
voidprint(void)
this->
stockcode;
quan<
price<
charstockcode[SIZE];
intquan;
doubleprice;
{Stockst1("
3000,5.67);
st1.print();
Stockst2("
600002"
st2.print();
第4章类和对象
(二)
【4.12】以下程序的运行结果是()。
classB{
B(){}
B(inti,intj)
{x=i;
y=j;
voidprintb()
x<
"
y<
classA{
A()
{}
A(intI,intj);
voidprinta();
Bc;
A:
A(inti,intj):
c(i,j)
voidA:
printa()
{c.printb();
{Aa(7,8);
a.printa();
A)8,9B)7,8
C)5,6D)9,10
【4.13】以下程序的运行结果是()。
voidset(inti,intj)
intget_y()
{returny;
classbox{
voidset(intl,intw,ints,intp)
{length=l;
width=w;
label.set(s,p);
intget_area()
{returnlength*width;
intlength,width;
Alabel;
{boxb;
b.set(4,6,1,20);
b.get_area()<
A)24B)4
C)20D)6
【4.14】以下程序的运行结果是()。
classSample{
Sample(inti,intj)
{x=i;
voiddisp()
disp1"
voiddisp()const
disp2"
{constSamplea(1,2);
a.disp();
A)disp1B)disp2
C)disp1disp2D)程序编译出错
【4.15】以下程序的运行结果是()。
classR{
R(intr1,intr2)
{R1=r1;
R2=r2;
voidprint();
voidprint()const;
intR1,R2;
voidR:
R1<
R2<
print()const
{Ra(6,8);
constRb(56,88);
b.print();
A)6,8B)56,88
C)0,0D)8,6
【4.16】指出下面程序中的错误,并说明原因。
Student()
{++x;
\npleaseinputstudentNo."
Sno;
staticintget_x()
{returnx;
intget_Sno()
{returnSno;
staticintx;
intSno;
intStudent:
x=0;
{cout<
Student:
get_x()<
Studentexist\n"
Studentstu1;
Student*p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 习题 解答 上机 指导 第二 源程序