引用.docx
- 文档编号:17887202
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:25
- 大小:20.46KB
引用.docx
《引用.docx》由会员分享,可在线阅读,更多相关《引用.docx(25页珍藏版)》请在冰点文库上搜索。
引用
01.分析以下程序的执行结果
#include
voidmain()
{
inta;
int&b=a;//变量引用
b=10;
cout<<"a="< } 解: 本题说明变量引用的方法。 b是a的引用,它们分配相同的空间,b的值即为a的值。 所以输出为a=10。 注意: 引用是引入了变量或对明的一个义词,引用不产生对象的副本。 ----------------------------------------------------------------- 02.分析以下程序的执行结果 #include classSample { intx; public: Sample(){}; Sample(inta){x=a;} Sample(Sample&a){x=a.x+1;} voiddisp(){cout<<"x="< }; voidmain() { Samples1 (2),s2(s1); s2.disp(); } 解: 本题说明类拷贝构造函数的使用方法。 Sample类的Sample(Sample&a)构造函数是一个拷贝构造函数,将a对象的x值赋给当前对象的x后加1。 所以输出为: x=3。 ----------------------------------------------------- 03.编写程序,调用传递引用的参数,实现两个字符串变量的交换。 例如开始: char*ap="hello"; char*bp="howareyou? "; 交换的结果使得ap和bp指向的内容分别为: ap: "howareyou? " bp: "hello" 解: 本题使用引用调用(实现由于字符串指针本身就是地址,这里可不使用引用参数,效果是一样的)。 程序如下: #include #include voidswap(char*&x,char*&y)//引用作为参数 { char*temp; temp=x;x=y;y=temp; } voidmain() { char*ap="hello"; char*bp="howareyou? "; cout<<"ap: "< cout<<"bp: "< swap(ap,bp); cout<<"swapap,bp"< cout<<"ap: "< cout<<"bp: "< } 本程序的执行结果如下: ap: hello bp: hoeareyou? swapap,bp ap: howareyou? bp: hello ----------------------------------------------------- 04.设计一个集合类Set,包括将集合置空、添加元素、判断元素是否在集合中、输出集合,以及将集合中元素逆置,另外还有一个拷贝构造函数,并使用一些数据进行测试。 解: Set类包括私有数据成员elems(存放集合元素)、pc(当前元素指针),一个默认构造函数和拷贝构造函数Set(Set&s),另有成员函数empty()(将集合置空)、isempty()(判断集合是否为空)、ismemberof()(判断元素是否在集合中)、add()(添加元素)、print()(输出集合)、reverse(将集合中元素置逆)。 本题程序如下: #include #defineMax100 classSet { public: Set(){pc=0;} Set(Set&s);//对象引用作为参数 voidempty(){pc=0;} intisempty(){returnpc==0;} intismemberof(intn); intadd(intn); voidprint(); voidreverse(); private: intelems[Max]; intpc; }; intSet: : ismemberof(intn) { for(inti=0;i if(elems[i]==n) return1; return0; } intSet: : add(intn) { if(ismemberof(n)) return1; elseif(pc>Max) return0; else { elems[pc++]=n; return1; } } Set: : Set(Set&p) { pc=p.pc; for(inti=0;i elems[i]=p.elems[i]; } voidSet: : print() { cout<<"{"; for(inti=0;i cout< if(pc>0) cout< cout<<"}"< } voidSet: : reverse() { intn=pc/2; for(inti=0;i { inttemp; temp=elems[i]; elems[i]=elems[pc-i-1]; elems[pc-i-1]=temp; } } voidmain() { SetA; cout<<"A是否为空: ";cout< cout<<"A: ";A.print(); SetB; for(inti=1;i<=8;i++) B.add(i); cout<<"B: ";B.print(); cout<<"5是否在B中: ";cout< B.empty(); for(intj=11;j<20;j++) B.add(j); SetC(B); cout<<"C: ";C.print(); C.reverse(); cout<<"C逆置"< cout<<"C: ";C.print(); } 本程序执行结果如下: A是否为空: 1 A: {} B: {1,2,3,4,5,6,7,8} 5是否在B中: 1 C: {11,12,13,14,15,16,17,18,19} C逆置 C: {19,18,17,16,15,14,13,12,11} 05.设计一个类Sample,实现两个复数的乘法运算。 解: Sample类包括复数的实部和虚部,以及实现复数相乘的成员函数mult()和输出复数的成员函数disp()。 本题的程序如下: #include classSample { floata;//实部 floatb;//虚部 public: Sample(){} Sample(floatx,floaty){a=x;b=y;} voidmult(Sample&s)//对象引用作为参数 { if(&s==this)//不能自己相乘 cout<<"自己不能相乘"< else { floatx=a*s.a-b*s.b; floaty=a*s.b+b*s.a; a=x;b=y; } } voiddisp() { if(b>0) cout< else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 引用