C++友元习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)};