• 502.94 KB
  • 2022-04-22 11:16:44 发布

c++面向对象程序设计 (姚全珠 著) 电子工业出版社 课后答案

  • 44页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn课后答案网您最真诚的朋友www.hackshp.cn网团队竭诚为学生服务,免费提供各门课后答案,不用积分,甚至不用注册,旨在为广大学生提供自主学习的平台!课后答案网:www.hackshp.cn视频教程网:www.efanjy.comPPT课件网:www.ppthouse.com课后答案网www.hackshp.cn 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第1章面向对象的方法学面面向对象的方法学向对象的方法学1.什么是面向对象方法学?解:面向对象方法学就是尽量模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。2.什么是对象?它与传统的数据有何关系?有什么不同?解:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。它与传统数据有本质的不同,传统数据是被动地等待对它进行处理,对象是进行处理的主体。3.什么是封装性和继承性?解:封装是面向对象方法的一个重要特点,即将对象的属性和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。继承性是子类自动共享父类数据结构和方khdaw.com法的机制,这是类之间的一种关系。4.什么是多态性?解:多态性是面向对象方法的重要特征。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。5.试写出学生管理系统中所涉及的类(属性和方法)。学生管理系统中学生信息有:姓名、学号、年龄、成绩;学生管理系统完成学生信息输入、学生信息输出、插入学生信息、删除学生信息、查找学生信息。解:classStudent{private:charcName[12];//姓名longlNum;课后答案网//学号intage;//年龄floatfGrade;//成绩public:www.hackshp.cnvoidInput();//输入学生信息voidPrint();//输出学生信息voidInsert();//插入学生信息voidDel();//删除学生信息voidFind();//查找学生信息};6.目前常用的面向对象程序设计语言有哪些?各有哪些特点?解:VisualC++6.0支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,可以大大提高软件系统的设计、管理和开发速度。Java语言是一种通用、并发、基于类的面向对象程序设计语言。Java语言具有简捷性、面向对象、分布式、健壮性、安全性、可移植性、解释型、高性能、多线程、动态性等特点。C#(读做“Csharp”)是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。C#集C语言的简洁强大、C++的面向对象、VB的图形化设计方法、Java的编译与执行机制等优点于一身。C#是创新性的新式编程语言,它巧妙地结合了最常用的行业语言和研究语言中的功能,并引入了多种潜在的新功能,提高了开发人员在语言构造方面的效率,将快速的应用程序开发与对底层平khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn台各种功能的访问紧密结合在一起,使得程序员能够在.NET平台上快速开发各种应用程序。7.C++支持多态性主要表现在哪些方面?解:C++支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是通过虚函数来实现的。思考题1.设计一个栈类,实现的操作有初始化栈、入栈、出栈、判栈空。解:classStack{private:inttop;ints[100];public:khdaw.comvoidIni_Stack();//初始化栈voidPush_Stack();//入栈voidPop_Stack();//出栈voidEmpty();//判栈空};2.设计一个队列类,实现的操作有初始化队列、入队、出队、判队空。解:classQueue{private:intfront,rear;intque[100];public:voidIni_Queue();课后答案网//初始化队列voidIn_Queue();//入队voidOut_Queue();www.hackshp.cn//出队voidEmpty();//判队空};第2章类类与与与对对对象象1.构造函数和析构函数的主要作用是什么?解:构造函数的功能是在创建对象时,给数据成员赋初值,即对象的初始化。析构函数的功能是释放一个对象,在对象删除之前,用它来做一些内存释放等清理工作。2.什么是this指针?它的主要作用是什么?解:this指针称为自引用指针。每当对象调用成员函数时,系统就将该对象的地址赋给this指针,这时C++编译器将根据this指针所指向的对象来确定应该引用哪一个对象的数据成员。3.什么是友元函数?解:友元函数不是当前类中的成员函数,它可以是一个不属于任何一个类的一般函数(即非khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn成员函数),也可以是另外一个类的成员函数。4.什么是静态数据成员?静态数据成员的定义和初始化方法是什么?解:类的静态数据成员拥有一块单独的存储区,不管用户创建了多少个该类的对象,所有这些对象的静态数据成员都共享这一块静态存储空间,是这些对象互相通信的一种方法。静态数据成员的定义格式:static类型名静态成员名;静态数据成员的初始化格式:类型类名∷静态数据成员=初始化值;5.关于构造函数的叙述正确的是(B)。A.构造函数可以有返回值B.构造函数的名字必须与类名完全相同C.构造函数必须带有参数D.构造函数必须定义,不能默认6.关于析构函数特征描述正确的是(C)。A.一个类中可以有多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数7.构造函数是在(B)时被执行的。khdaw.comA.程序编译B.创建对象C.创建类D.程序装入内存8.定义A是一个类,那么执行语句“Aa,b(3),*p;”调用了(A)次构造函数。A.2B.3C.4D.59.在下列函数原型中,可以作为类Base析构函数的是(B)。A.void~BaseB.~Base()C.~Base()constD.Base()10.this指针是C++实现(B)的一种机制。A.抽象B.封装C.继承D.重载11.已知类中的一个成员函数说明为:voidSet(X&a)其中,X&a的含义是(C)。A.指向类X的指针为aB.将a的地址赋给变量C.a是类X的对象引用,用来作为Set()的形参D.变量X与a按位与作为函数Set()的形参12.下面关于友元函数的描述中,正确的说法是(A)。A.友元函数是独立于当前类的外部函数课后答案网B.一个友元函数不能同时定义为两个类的友元函数C.友元函数必须在类的外部定义www.hackshp.cnD.在外部定义友元函数时,必须加关键字friend13.一个类的友元函数能够访问该类的(D)。A.私有成员B.保护成员C.公有成员D.所有成员14.友元的作用之一是(A)。A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增强成员函数的种类15.n=1516.s=1017.Constructing10Destructing20khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnDestructing思考题1.定义一个学生类,学生信息有学号、姓名和成绩。成绩包括计算机、英语、数学成绩和平均分。要求利用队列实现学生的入队、出队和显示等功能。constintMAXSIZE=5;//queue.hstructdatatype{longno;charname[10];floatscore;};classStudent{privatekhdaw.com:datatypedata[MAXSIZE];intfront,rear;intnum;public:Student();intIn_SeQueue(datatypex);intOut_SeQueue();voidPrint_SeQueue();};//queue.cpp#include"iostream"usingnamespacestd;#include"queue.h"课后答案网int_tmain(intargc,_TCHAR*argv[])www.hackshp.cn{Studentsq;inti;for(i=1;i<=3;i++){datatypestu;cout<<"inputno,name,score"<>stu.no>>stu.name>>stu.score;sq.In_SeQueue(stu);}cout<<"Print_SeQueue"<0;number--,i=(i+1)%MAXSIZE)cout<>b.name>>b.author>>b.publish>>b.price;sq.Push_SeqStack(b);}cout<<"Print_SeqStack"<>x1>>x2>>x3>>x4;cout<>x>>y;cout<<"长方形的面积是:"<>x;cout<<"正方形的面积是:"<>x;cout<<"圆的面积是:"<>x>>y>>z;cout<<"梯形的面积是:"<>x>>y>>z;cout<<"长方形的体积是:"<>x;cout<<"正方形的体积是:"<>x;cout<<"圆的体积是:"<>x>>y>>x1>>y1>>z;cout<<"梯形的体积是:"<>a[i];sort(a,n);cout<<"排序结果为:"<>b[i];sort(b,n);课后答案网cout<<"排序结果为:"<和作用域运算符D.静态数据成员不是所有对象所共有的2.下列关于静态数据成员的叙述,错误的是(A)。A.静态数据成员在对象调用析构函数后,从内存中撤销B.即使没有实例化类,静态数据成员也可以通过类名进行访问C.类的静态数据成员是该类所有对象所共享课后答案网D.类的静态数据成员需要初始化3.下列关于静态成员的叙述中,错误的是(B)。A.类的外部可以直接调用类的静态数据成员和静态成员函数www.hackshp.cnB.与一般成员一样,只有通过对象才能访问类的静态成员C.类的静态数据成员不能在构造函数中初始化D.类的一般成员函数可以调用类的静态成员4.声明类的成员为静态成员,必须在其前面加上关键字(B)。A.constB.staticC.publicD.virtual5.静态成员为该类的所有(B)共享。A.成员B.对象C.this指针D.友元6.程序运行结果:1237.程序运行结果:CStatic::val=10思考题khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn1.利用静态数据成员的概念,编写一个类,统计目前存在多少个该类的对象。classA{private:staticintn;public:A(){n++;}voidPrint(){cout<>B.++C.=D.+4.程序的运行结果:x:10,y:20www.hackshp.cnx:10,y:205.程序的运行结果:a=50b=60a=-50b=-60a=50b=606.程序的运行结果:i1:5i2:3i3:6i1:6i2:4i3:7思考题1.重载减法运算符,实现两个字符串相减。#include"iostream"usingnamespacestd;khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnclassString{private:char*buffer;intlength;public:String(char*in_str);constString&operator-=(constString&);//声明-=运算符重载函数voidShowString();~String();};intmain(){khdaw.comStrings1("happybirthday"),s2("birthday");s1-=s2;s1.ShowString();return0;}String::String(char*in_str){length=strlen(in_str);buffer=newchar[length+1];strcpy(buffer,in_str);}constString&String::operator-=(constString&sub_str)//定义+=运算符重载函数{课后答案网char*temp=buffer;//指向原字符串所占空间buffer=newchar[length+1];www.hackshp.cn//重新分配空间inti,j,k;i=0;j=0;k=0;while(i>x[i][j];Matrixb(x);c=a+b;cout<>x[i][j];Matrixb(x);khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnc=a+b;cout<0)cout<<"+";if(imag!=0)cout<classArray{private:khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnTa[SIZE];public:Array();voidsort();intfind(Tk);Tsum();voidPrint();};//array.cpp#include"iostream"#include"iomanip"usingnamespacestd;#includekhdaw.com"array.h"int_tmain(intargc,_TCHAR*argv[]){cout<<"inputintarray"<int_array;int_array.sort();int_array.Print();intn;n=int_array.find(55);if(n!=-1)cout<<"找到的了,该值是第"<double_array;www.hackshp.cndouble_array.sort();double_array.Print();n=double_array.find(34.5);if(n!=-1)cout<<"找到的了,该值是第"<Array::Array(){khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cninti;for(i=0;i>a[i];}templatevoidArray::sort(){Tt;inti,j;for(i=0;iintArray::find(Tk){inti=0;while(iTArray::sum(){Ts=0;inti;for(i=0;ivoidArray::Print(){inti;for(i=0;iclassArray{khdaw.comprivate:Ta[MAXSIZE];intlast;public:Array();intInsert(inti,Tx);intDel(inti);voidSort();intFind(Tk);voidPrint();};//array.cpp#include"iostream"课后答案网#include"iomanip"usingnamespacestd;www.hackshp.cn#include"array.h"int_tmain(intargc,_TCHAR*argv[]){cout<<"输入整型数据"<int_array;inti,x;cout<<"输入插入的位置和元素"<>i>>x;if(int_array.Insert(i,x)==1){cout<<"插入成功"<>i;if(int_array.Del(i)==1){cout<<"删除成功"<>k;khdaw.comif(int_array.Find(k)!=-1)cout<<"找到了!"<double_array;doubley;cout<<"输入插入的位置和元素"<>i>>y;if(double_array.Insert(i,y)==1){cout<<"插入成功"课后答案网<>i;if(double_array.Del(i)==1){cout<<"删除成功"<>z;if(double_array.Find(z)!=-1)khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cncout<<"找到了!"<Array::Array(){inti;cout<<"输入元素的个数"<>last;for(i=0;i>a[i];}templateintArray::Insert(inti,Tx){intj;if(last==MAXSIZE-1){printf("tableisfull!");return(-1);课后答案网}if(i<1||i>last+1)www.hackshp.cn{printf("placeiswrong!");return(0);}for(j=last;j>=i-1;j--){a[j+1]=a[j];}a[i-1]=x;last++;return(1);}templateintArray::Del(inti)khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn{intj;if(i<1||i>last){printf("thiselementdon"texist!");return(0);}for(j=i;j<=last;j++){a[j-1]=a[j];}last--;return(1);}khdaw.comtemplatevoidArray::Sort(){Tt;inti,j;for(i=0;iintArray::Find(Tk){inti=0;while(ikhdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnvoidArray::Print(){inti;for(i=0;istructNode{Tdata;Node*next;};khdaw.comtemplateclassLinkList{private:Node*head1;Node*head2;Node*head3;intn1,n2,n3;public:LinkList();voidCreateLinkList(Node*h);voidMerge();voidPrint_LinkList();课后答案网};#include"iostream"//mergesort.cppwww.hackshp.cnusingnamespacestd;#include"mergesort.h"intmain(){cout<<"整型链表"<L;L.Print_LinkList();cout<<"实型链表"<L1;L1.Print_LinkList();return0;}templatekhdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnLinkList::LinkList(){intn;do{cout<<"1.......输入链表"<>n;switch(n){case1:khdaw.comhead1=newNode;head1->next=0;CreateLinkList(head1);break;case2:head2=newNode;head2->next=0;CreateLinkList(head2);}}while(n);}templatevoidLinkList::Print_LinkList()课后答案网{intn;www.hackshp.cndo{Node*p;cout<<"1.......输出链表"<>n;switch(n){case1:p=head1->next;break;case2:khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnp=head2->next;break;case3:Merge();p=head3->next;}if(n){while(p){cout<data<<"";p=p->next;}khdaw.comcout<voidLinkList::CreateLinkList(Node*h){intflag=-1,num=0;Node*s,*r;r=h;Tx;cout<<"pleaseinputavalue(-1end):"<>x;课后答案网while(x!=flag){www.hackshp.cns=newNode;s->data=x;r->next=s;r=s;cin>>x;}if(r!=NULL)r->next=NULL;}templatevoidLinkList::Merge(){Node*p1;Node*s,*r;p1=head1->next;khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnTa[Maxlen],b[Maxlen],c[Maxlen];inti,j,k,l,n1,n2;i=0;n1=0;n2=0;while(p1){a[i]=p1->data;p1=p1->next;i++;n1++;}p1=head2->next;khdaw.comi=0;while(p1){b[i]=p1->data;p1=p1->next;i++;n2++;}i=n1-1;j=n2-1;k=0;while(i>=0&&j>=0){if(a[i]>b[j])课后答案网{c[k++]=a[i--];www.hackshp.cn}else{c[k++]=b[j--];}}if(i>=0){for(l=i;l>=0;l--)c[k++]=a[l];}else{for(l=j;l>=0;l--)c[k++]=b[l];khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn}head3=newNode;head3->next=0;r=head3;for(i=0;i;s->data=c[i];r->next=s;r=s;}if(r!=NULL)r->next=NULL;}4khdaw.com.用类模板实现栈,功能有:判断栈是否为空、入栈、出栈、读栈顶元素。constintMAXSIZE=100;//stack.htemplateclassStack{private:Tdata[MAXSIZE];inttop;public:Stack();intEmpty_SeqStack();intPush_SeqStack(Tx);TPop_SeqStack();};课后答案网//stack.cpp#include"iostream"www.hackshp.cnusingnamespacestd;#include"stack.h"intmain(){Stacks;inti;for(i=0;i<10;i++)s.Push_SeqStack(i);for(i=0;i<10;i++)cout<c;charch;for(ch="a";ch<="z";ch++)khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnc.Push_SeqStack(ch);for(i=1;i<=26;i++)cout<Stack::Stack(){top=-1;}templateintStack::Empty_SeqStack(){khdaw.comif(top==-1)return1;elsereturn0;}templateintStack::Push_SeqStack(Tx){if(top==MAXSIZE-1){return(0);}else课后答案网{top++;www.hackshp.cndata[top]=x;return(1);}}templateTStack::Pop_SeqStack(){if(Empty_SeqStack()==1){return0;}else{Tx;x=data[top];khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cntop--;returnx;}}第9章输入/输出流输输出流出流1.大多数C++程序通常包含.iostream.h头文件,它包含了所有输入/输出操作所需要的信息。2.成员函数setf()和unsetf()被用来设置和恢复格式状态标志。3.要格式化流操纵元,必须包含头文件iomanip.h。流插入操作符是<<,流提取操作符是>>。4.C++中,数据文件类型分为(C)。khdaw.comA.文本文件和顺序文件B.顺序文件和随机文件C.文本文件和二进制文件D.数据文件和文本文件5.(A)是标准输入流。A.cinB.coutC.cerrD.clog6.关于提取和插入运算符,下列说法不正确的是(A)。A.可以重载为类的成员函数B.应该重载为类的友元函数C.提取运算符是从输入字符序列中提取数据D.插入运算符是把输出数据插入到输出字符序列中7.选择下面程序的运行结果(D)。#includevoidmain(){inti=100;cout.setf课后答案网(ios::hex);cout<>被重载以处理所有的标准数据——包括字符和内存地址(仅对流插入)——和全部用户自定义类型,而且可以作为成员函数定义。(不正确)9.下面程序运行后,数据文件data.dat保存的结果是(13579)。#include#includeusingnamespacestd;intmain()khdaw.com若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn{ofstreamoutf("data.dat");inti;for(i=1;i<10;i++){if(i%2==0)cout<

您可能关注的文档