C++友元习题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

01.分析以下程序的执行结果

02.#include<>

03.class Sample

04.{

05.int n;

06.public:

07.Sample(int i){n=i;}

08.friend int add(Sample &s1,Sample &s2);

09.};

10.int add(Sample &s1,Sample &s2)

11.{

12.return +;

13.}

14.void main()

15.{

16.Sample s1(10),s2(20);

17.cout<

18.}

19.

20.解:

21.本题说明了友元函数的使用方法。add()是一个友元函数,它返回两个引用对象的n值之和。

22.所以输出为:30

23.

24.注意:友元函数不是类的成元函数

25.

26.----------------------------------------------------

27.

28.02.分析以下程序的执行结果

29.#include<>

30.class B;

31.class A

32.{

33.int i;

34.public:

35.int set(B&);

36.int get(){return i;}

37.A(int x){i=x;}

38.};

39.class B

40.{

41.int i;

42.public:

43.B(int x){i=x;}

44.friend A;

45.};

46.int A::set(B &b) 一个学生类student,包括学生姓名、成绩,设计一个友元函数,比较两个学生成绩的

高低,并求出最高分和最低分的学生。

47.解:

48.#include<>

49.#include<>

50.class student

51.{

52.char name[10];

53.int deg;

54.public:

55.student(char na[],int d)

56.{

57.strcpy(name,na);

58.deg=d;

59.}

60.char *getname(){ return name;}

61.friend int compare(student &s1,student &s2)

62.{

63.if>

64.return 1;

65.else if==

66.return 0;

67.else return -1;

68.}

69.};

70.void main()

71.{

72.student st[]={student("王华",78),student("李明",92),student("张伟",62),student("孙强",88)};

73.int i,min=0,max=0;

74.for(i=1;i<4;i++)

75.{

76.if(compare(st[max],st[i])==-1)

77.max=i;

78.else if(compare(st[i],st[min])==1)

79.min=i;

80.}

81.cout<<"输出结果:"<

82.cout<<" 最高分:"<

83.cout<<" 最低分:"<

84.}

85.

86.本程序的执行结果如下:

87.输出结果:

88.最高分者:李明

89.最低分者:张伟

90.

91.-------------------------------------------------------------

92.

93.04.有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成绩对应的等级:大于等于

90:优;80~90:良;70~79:中;60!69:及格;小于60:不及格。

94.解:

95.#include<>

96.#include<>

97.#include<>

98.class student

99.{

100.char name[10];

101.int deg;

102.char level[7];

103.public:

104.student(char na[],int d)

105.{

106.strcpy(name,na);

107.deg=d;

108.}

109.char *getname(){ return name;}

110.friend void trans(student &s)

111.{

112.if>=90)

113.strcpy,"优");

114.else if>=80)

115.strcpy,"良");

116.else if>=70)

117.strcpy,"中");

118.else if>=60)

119.strcpy,"及格");

120.else

121.strcpy,"不及格");

122.}

123.void disp()

124.{

125.cout<

126.}

127.};

128.void main()

129.{

130.student st[]={student("王华",78),student("李明",92),student("张伟",62),student("孙强",88)};

相关文档
最新文档