C程序设计基础课后答案第五章doc文档格式.docx
- 文档编号:14421887
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:19
- 大小:25.59KB
C程序设计基础课后答案第五章doc文档格式.docx
《C程序设计基础课后答案第五章doc文档格式.docx》由会员分享,可在线阅读,更多相关《C程序设计基础课后答案第五章doc文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
charsex;
};
voidfun(employee*p)
{if((*p).sex=='
m'
)
(*p).name<
}
voidmain()
{employeeemp[5]={"
Liming"
'
"
Wangxiaoping"
f'
Luwei"
inti;
for(i=0;
i<
3;
i++)
fun(emp+i);
3.#include<
structnode
{char*s;
node*q;
{nodea[]={{"
Mary"
a+1},{"
Jack"
a+2},{"
Jim"
a}};
node*p=a;
s<
q->
4.#include<
classA
{public:
intf1();
intf2();
voidsetx(intm){x=m;
cout<
x<
endl;
voidsety(intn){y=n;
y<
intgetx(){returnx;
intgety(){returny;
private:
intx,y;
};
intA:
:
f1(){returnx+y;
f2(){returnx-y;
{Aa;
a.setx(10);
a.sety(5);
a.getx()<
'
\t'
<
a.gety()<
a.f1()<
a.f2()<
5.#include<
classT
T(intx,inty)
{a=x;
b=y;
"
调用构造函数1."
a<
b<
}
T(T&
d)
{cout<
调用构造函数2."
d.a<
d.b<
~T(){cout<
调用析构函数."
endl;
intadd(intx,inty=10){returnx+y;
inta,b;
{Td1(4,8);
Td2(d1);
d2.add(10)<
6.#include<
{public:
T(intx){a=x;
b+=x;
};
staticvoiddisplay(Tc)
{cout<
"
a="
c.a<
'
b="
c.b<
private:
inta;
staticintb;
intT:
b=5;
{TA(3),B(5);
T:
display(A);
display(B);
7.
#include<
math.h>
classpoint
point(floatx,floaty)
{a=x;
b=y;
?
点("
)"
;
frienddoubled(point&
A,point&
B)
{returnsqrt((A.a-B.a)*(A.a-B.a)+(A.b-B.b)*(A.b-B.b));
doublea,b;
{pointp1(2,3);
到"
pointp2(4,5);
的距离是:
d(p1,p2)<
}
8.#include<
A(){a=5;
voidprinta(){cout<
A:
a="
private:
inta;
friendclassB;
classB
{
public:
voiddisplay1(At)
{t.a++;
display1:
t.a<
voiddisplay2(At)
{t.a--;
display2:
{Aobj1;
Bobj2;
obj1.printa();
obj2.display1(obj1);
obj2.display2(obj1);
5.2思考题
1.结构和类有什么区别?
如果把程序中定义结构的关键字struct直接改成class,会有什么问题?
用教材上的一个例程试一试,想一想做什么修改能使程序正确运行?
2.分析以下说明结构的语句
{intdata;
nodeerror;
//错误
node*ok;
//正确
error和ok分别属于什么数据类型?
有什么存储要求?
error出错的原因是什么?
3.有说明
{inta;
doublex;
funMember();
Aa1,a2,a3;
编译器为对象a1,a2,a3开辟了什么内存空间?
它们有各自的funMember函数的副本吗?
C++通过什么机制调用类的成员函数?
4.C++提供了默认版本的构造函数,为什么还需要用户自定义构造函数?
编写一个验证程序,说明自定义构造函数的必要性。
5.试从定义方式、访问方式、存储性质和作用域分析类的一般数据成员和静态数据成员的区别,并编写一个简单程序验证之。
6.试从定义方式、调用方式分析静态成员函数和友员函数的区别。
考察教材的例5-22,若classGoods的指针域
Goods*next;
被声明为私有(private)成员,程序会出现什么错误?
做什么最小修改能使程序正确运行?
请你试一试。
1.分析以下说明结构的语句
structNode
{intdata;
Nodeerror;
//错误
Node*ok;
//正确
};
【答案】
error是Node结构类型数据成员,错误。
原因是结构定义的数据成员若为本身的结构类型,是一种无穷递归。
ok是指向Node类型的指针,定义正确,占4字节。
2.本章例5-5中用辅助数组对结构数组做关键字排序,有定义
person*index[100];
index数组存放结构数组元素的地址。
如果把index定义改为
intindex[100];
用于存放结构数组元素的下标。
可以实现对结构数组的索引排序吗?
如何修改程序?
可以。
关键是通过整型索引数组元素作为下标访问结构数组。
表示为:
all[pi[i]].nameall[pi[i]].idall[pi[i]].salary
有关程序如下:
#include<
iostream>
usingnamespacestd;
structperson//说明结构类型
{charname[10];
unsignedintid;
doublesalary;
};
voidInput(person[],constint);
voidSort(person[],int[],constint);
voidOutput(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 课后 答案 第五 doc