李爱华程磊面向对象程序的设计课后答案完整版.docx
《李爱华程磊面向对象程序的设计课后答案完整版.docx》由会员分享,可在线阅读,更多相关《李爱华程磊面向对象程序的设计课后答案完整版.docx(42页珍藏版)》请在冰豆网上搜索。
李爱华程磊面向对象程序的设计课后答案完整版
第二章
2-4
#include
usingnamespacestd;
Add(inta,intb);
intmain()
{
intx,y,sum;
cout<<"pleaseinputxandy:
";
cin>>x>>y;
sum=add(x,y);
cout<}
Add(inta,intb)
{
returna+b;
}
2-5
(1)thisisaC++program.
(2)
x=50.6y=10z=A
x=216.34y=10z=A
x=216.34y=2z=A
x=216.34y=2z=E
(3)
xyz
50010000
50015001500
5002001500
2-6
#include
usingnamespacestd;
intmain()
{
int*p,*init;
intcountp=0;
intcountn=0;
p=newint[20];
init=p;
for(inti=0;i<20;i++)
{
cin>>*p;
p++;
}
p=p-20;
for(i=0;i<20;i++)
{
if(*p>0)countp++;
if(*p<0)countn++;
cout<<*p<<"";
p++;
}
cout<<"正数有:
"<cout<<"负数有:
"<p=init;
delete[]p;
return0;}
2-7不做要求
#include
//#include
usingnamespacestd;
voidcheckagescore(stringname,intage)
{
if(name=="exit")throwname;
if(age<0||age>50)
throwage;
}
intmain()
{
stringname;
intage;
for(inti=0;i<5;i++)
{
cin.ignore();
getline(cin,name);
cin>>age;
try
{
checkagescore(name,age);
}
catch(string)
{
cout<<"exception:
nameisexit"<continue;
}
catch(int)
{
cout<<"exception:
ageisnotproper"<continue;
}
cout<<"name:
"<"<}
return0;
}
第三章
3-1
(1)A
(2)C(3)B(4)C(5)C
(6)B(7)B(8)C(9)C
3-7
(1)
main()函数中
p1.age=30;语句是错误的。
age是类的私有成员
(2)
构造函数应当给常数据成员和引用成员初始化,将构造函数改为:
A(inta1,intb1):
a(a1),b(b1){}
或
A(inta1):
a(a1),b(a){}再将main中的Aa(1,2);改为Aa
(1);
(3)
(1)在Test类中添加语句:
voidprint();
voidPrint(){
cout<}
改为
voidTest:
:
Print(){
cout<}
main函数中
Init(38,15);改为:
A.Init(38,15);
Print();改为:
A.Print();
3-8
(1)
ConstructingA
ConstructingB
DestructingB
DestructingA
(2)
doublea,doubleb
point&p
p.x
3-9
classbox
{
intlen1,len2,len3;
public:
box(intl1,intl2,intl3){len1=l1;len2=l2;len3=l3;}
longvolumn(){returnlen1*len2*len3;}
};
3-10
classTest{
intm1,m2;
public:
voidInit(inta,intb){m1=a;m2=b;}
voidPring(){cout<};
3-11
略
3-12
}
第四章
4-6
(1)D
(2)D(3)D(4)D(5)B
(6)D
4-7
(1)
staticintcount=0;这样初始化静态成员值是不对的将其改为
staticintcount;
在类外,main函数前加
intSample:
:
count=0;
(2)
#include
//#include
usingnamespacestd;
classCtest
{
private:
intx;constinty1;
public:
constinty2;
Ctest(inti1,inti2):
y1(i1),y2(i2)
{
y1=10;//y1为常量不能赋值
x=y1;
}
intreadme()const;
};
intCtest:
:
readme()const
{
inti;
i=x;
x++;//常函数不能改变成员值
returnx;
}
intmain()
{
Ctestc(2,8);
inti=c.y2;
c.y2=i;//y2为常量,不能改值
i=c.y1;//y1私有,类外不能访问
return0;
}
将出错语句全部注释
4-8
(1)
题中印刷错误,将classC构造函数改为:
C()
{cout<<"constructorC:
";}
运行结果为:
constructorA
constructorB
constructorC
(2)
40
(3)
3
4
3
4-9#include
#include
classDate
{
intyear;
intmonth;
intday;
public:
Date(inty,intm,intd)
{
year=y;month=m;day=d;
}
voiddisp()
{
cout<}
friendintcount_day(Date&d,intk);
friendintl(intyear);
friendinth(Date&d1,Date&d2);
};
intcount_day(Date&d,intk)
{
staticintday_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
//使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年
intj,i,s;
if(l(d.year))
j=1;//闰年,取1
elsej=0;//非闰年,取0
if(k)//K非0时
{
s=d.day;
for(i=1;is+=day_tab[j][i-1];
}
else//K为0时
{
s=day_tab[j][d.month]-d.day;
for(i=d.month+1;i<=12;i++)
s+=day_tab[j][i-1];
}
returns;//S为相差的天数
}
intl(intyear)
{
if(year%4==0&&year%100!
=0||year%400==0)//是闰年
return1;
else//不是闰年
return0;
}
inth(Date&d1,Date&d2)
{
intdays,day1,day2,y;
if(d1.year{
days=count_day(d1,0);
for(y=d1.year+1;yif(l(y))//闰年
days+=366L;
else//非闰年
days+=365L;
days+=count_day(d2,1);
}
elseif(d1.year==d2.year)
{
day1=count_day(d1,1);
day2=count_day(d2,1);
days=day2-day1;
}
else
days=-1;
returndays;
}
voidmain()
{intyear1,year2,month1,month2,day1,day2;
cout<<"输入日期1"<cin>>year1>>month1>>day1;
cout<<"输入日期2"<cin>>year2>>month2>>day2;
Dated1(year1,month1,day1),d2(year2,month2,day2);
intds=h(d1,d2);
{
cout<<"输出结果:
"<}
if(ds>=0)
{
d1.disp();printf("与");
d2.disp();printf("之间有%d天\n\n",ds);
}
else//第一个日期小于第二个日期
cout<<"时间错误!
"<}
4-10
#include
#include
classStudent
{
intnumber;
charname[20];
public:
Student(inti=0,char*s="\0")//构造学生对象
{number=i;
strcpy(name,s);
}
voidPrint()/