




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+程序设计试题(下)样卷(卷面50分)(考试用时100分钟)一、选择题(每题1分,共5分)1设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是 。A为屏幕显示和文件写入各自设计一个成员函数。B为屏幕显示和文件写入统一设计一个成员函数。C重载插入运算符()。2关于异常处理,那些说法是错误的 。A在C+程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。B当抛出异常后,寻找匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(Stack Unwinding)。C当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。Dcatch子句实际是一个特殊的函数。3下列关于动态资源分配的说法中错误的是 。A动态分配的资源不仅包括内存,还包括文件。B动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。C动态分配的资源通常要求在析构函数中释放。D对含有动态分配的数据成员的类对象应该采用深复制。4下列有关模板的描述那些是错误的 。A模板把数据类型作为一个设计参数,称为参数化程序设计。B模板参数除模板类型参数外,还有非类型参数。C类模板与模板类是同一概念。D使用时,模板参数与函数参数相同,是按位置而不是名称对应的。5关于多态,下面那些说法是正确的 。A多态分静态的(编译时)和动态的(运行时)。B运行时的多态与类的层次结构有关。C在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。D仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。二、填空题(每空0.5分,共5分)1有标准字符串类string对象str,str1,str2。对其字符元素的访问可用两种方式:stri和str.at(i)。两者的区别是 (1) 。str1+=str2 实现的运算是 (2) 。str.substr(pos,length1) 实现的运算是 (3) 。2C/C+中的多维数组用的是一个 (4) 的定义,即多维数组的基本定义是 (5) 构成的数组,三维数组的元素是 (6) 。3单链表的结点包含两个域: (7) 和 (8) 。使用链表的最大的优点是 (9) ,即使是动态数组也做不到这一点。4纯虚函数定义时在函数参数表后加=0,它表明程序员对函数体不定义,其本质是将指向函数体的指针定为 (10) 。三、阅读程序段(每题4分,共16分)1写出下面的程序输出的数据,这是什么图形?int main()int a1011=0,1,i,j;for(i=1;i10;i+) for(j=1;j=i+1;j+)aij=ai-1j-1+ai-1j;for(i=0;i10;i+)for(j=1;j=i+1;j+)coutaijt;coutendl;return 0;2写出下列程序的输出结果,并做简单的说明。class Studentstring coursename; /课程名int classhour;/学时int credit;/学分public:Student()coursename=#;classhour=0;credit=0;virtual void Calculate()credit=classhour/16;void SetCourse(string str,int hour)coursename=str;classhour=hour;int GetHour()return classhour;void Print()coutcoursenametclasshour学时tcredit学分Calculate();ps-Print();ps=&g;ps-Calculate();ps-Print();return 0;3写出该程序的输出结果,并说明该类的定义中top和maxSize的意义。templateclass Stackint top; T *elements; int maxSize; public:Stack(int=30); Stack()delete elements;void Push(const T &data); T Pop();template Stack:Stack(int maxs)maxSize=maxs;top=-1;elements=new T maxSize; template void Stack:Push(const T &data)elements+top=data; template T Stack:Pop()return elementstop-;int main()int i;char a5=k,c,a,t,s;Stackcstack();for(i=0;i5;i+) cstack.Push(ai);for(i=0;i5;i+) cstack.Pop();return 0;4写出下列程序的输出结果,指出错误所在;将A的析构函数改为虚函数结果又如何?class Aint *p;public:A()p=new int3;cout”A().”;A()deletep;cout”A().n”;class B:public Aint *q;public:B()q=new int256;cout”B(). ”;B()deleteq;cout”B().”;int main()int i;for(i=0;i3;i+)A*r=new B; /重复创建动态对象delete r; /重复释放动态对象四、填空,完善程序(每空1.5分,共24分)1对半查找递归算法,x为定值,算法作为升序有序表(ordered list)模板类的成员函数。其中T为模板类型参数,sixe代表有序表中数组slist元素的个数。小于比较运算符()在具体的类中重载。template int Orderedlist:Binarysearch(T & x,const int low,const int high) int mid=-1; if (low=high)mid=(low+high)/2;if(slistmidx) mid=Binarysearch(x, (1) );else if(xslistmid) mid=Binarysearch(x, (2) );return (3) ;2冒泡排序算法,作为Orderedlist类的成员函数。last是有序表元素个数。template void Orderedlist:BubbleSort()bool noswap; /交换标志int i,j;T temp;for (i=0;ilast;i+) noswap= (4) ;for(j= (5) ; (6) ; (7) ) /从下往上冒泡if(slistjslistj-1)temp=slistj;slistj=slistj-1;slistj-1=temp;noswap= (8) ;if(noswap) break; 3用虚函数来实现辛普生法求函数的定积分。在梯形法中是用直线来代替曲边梯形的曲边,在辛普生法中是用抛物线来代替,得出的公式为(区间必须为偶数n个相等区间)。class Simpsondouble Intevalue,a,b; /Intevalue积分值,a积分下限,b积分上限public:virtual double fun(double x)=0; /被积函数声明为纯虚函数Simpson(double ra=0,double rb=0)a=ra;b=rb;Intevalue=0;void Integrate()double dx;int i;dx=(b-a)/2000;Intevalue= (9) ;for(i=1;i2000;i+=2) Intevalue+=4*fun( (10) );for(i=2;i2000;i+=2) Intevalue+=2*fun( (10) );Intevalue*=dx/3;void Print()cout积分值=IntevalueIntegrate(); /动态s-Print();return 0;4单链表的结点采用类Node,以链表类List为友元类,List可直接访问Node的私有成员。对链表整体的操作则作为链表类的成员函数,这里列出向前生成链表、向后生成链表、创建结点等等。templateclass NodeT info; /数据域Node *link; /指针域public:friend class List;templateclass ListNode *head,*tail; /链表头指针和尾指针public:void InsertFront(Node* p); /可用来向前生成链表,在表头插入一个结点void InsertRear(Node* p); /可用来向后生成链表,在表尾添加一个结点Node*CreatNode(T data); /创建一个结点(孤立结点);templatevoid List:InsertFront(Node *p) /链头插入p-link= (12) ; (13) =p;if(tail=head) tail=p;templatevoid List:InsertRear(Node *p) /链尾插入p-link= (14) ; (15) =p;tail=p;templateNode* List:CreatNode(T data)/建立新节点Node*tempP=new Node(data);return tempP;5为学生类重载插入、提取和小于运算符。class studentint key;string name;public:bool operator(student);friend ostream & operator(istream & s,student & k);ostream & operator(istream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论