C语言程序设计__期末考试试题及答案.pdf
《C语言程序设计__期末考试试题及答案.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计__期末考试试题及答案.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+语言程序设计期末考试试题及答案姓名 学 号 班号题号二(1)二(2)总分成一、填空1.在类中必须声明成员函数的 原型,成员函数的实 现 部分可以写在类外。2 .如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是 引用 类型或 指针 类型。3.抽象 类只能作为基类使用,而不能声明它的对象。4 .进行函数重载时,被重载的同名函数如果都没有用const修 饰,则 它 们 的 形 参 个数或类型必须不同。5.通过一个对象只能调用它的常成员函数,不能调用其他成员函数。6 .函数的递归调用是指函数直接或间接地调用自身。7 .拷贝构造函数的形参必须是 本类对象的引用 O二、阅读下
2、列程序,写出其运行时的输出结果如果程序运行时会出现错误,请简要描述错误原因。1.请在以下两题中任选一题,该题得分即为本小题得分。如两题都答则取两题得分之平均值为本小题得分。(1)程 序:#includeclass Base#include private:char msg30;protected:int n;public:Base(chars,int m=0):n(m)strcpy(msg,s);)void output(void)coutnendlmsgendl;);class Derivedl:publicBase(private:int n;public:Derivedl(int m=1
3、):Base(HBase,m-1)n=m;void output(void)coutnendl;Base:output(););class Derived2:publicDerivedl(private:int n;public:Derived2(int m=2):Derived n=m;void output(void)coutnendl;Derived 1:output(););int main()运行结果:1Base B(BaseClass,1);Derived2 D;B.output();D.output();)Base Class210Base(2)程 序:#include clas
4、s Samppublic:void Setij(int a,intb)i=a,j=b;Samp()(coutDestroying.iendl;)int GetMuti()return巧;protected:int i;intj;);int main()(Samp*p;运 行 结 果:p=new Samp5;if(!p)coutAllocationerrorn;return 1;)for(int j=0;j5;j+)pOl.SetijO.j);for(int k=0;k5;k+)coutMutikis:pk.GetMuti()endl;deletep;return 0;)Muti0 is:OMu
5、ti1 is:1Muti2 is:4Muti3 is:9Muti4 is:16Destroying.4Destroying.3Destroying.2Destroying.1Destroying.02.请在以下两题中任选一题,该题得分即为本小题得分。如两题都答,则取两题得分之平均值为本小题得分。(1)程 序:#includeinclude class Vector(public:Vector(ints=100);int&Elem(intndx);voidDisplay(void);void Set(void);-Vector(void);protected:int size;int*buffe
6、r;);Vector:Vector(int s)(buffer=newintsize=s;)int&Vector:Elem(intndx)(if(ndx=size)(couterror inindexnendl;exit;)return bufferndx;)voidVector:Display(void)(for(int j=0;jsize;j+)coutElem(j)endl;)void Vector:Set(void)(for(int j=0;jsize;j+)Elem(j)=j+1;)Vector:-Vector(void)(delete buffer;)int main()(Vect
7、or a(10);Vector b(a);a.Set();b.Display();)运 行 结 果:12345678910最后出现错误信息,原因是:声明对象b 是进行的是浅拷贝,b 与 a 共用同一个buffer,程序结束前调用析构函数时对同一内存区进行了两次释放。(2 )程序:#includeclass CAT(public:CAT();CAT(const&CAT);CAT();int GetAge()return*itsAge;void SetAge(intage)*itsAge=age;protected:int*itsAge;);CAT:CAT()(itsAge=new int;*it
8、sAge=5;)CAT:CAT()(delete itsAge;itsAge=NULL;)int main()(CAT a;coutasage:a.GetAge()endI;a.SetAge(6);CAT b(a);coutasage:a.GetAge()endI;coutbsage:b.GetAge()endI;a.SetAge(7);coutnasage:a.GetAge()endI;coutnbsage:b.GetAge()endI;)运行结果:as age:5as age:6bs age:6as age:7bs age:7最后出现错误信息,原因是:声明对象b是进行的是浅拷贝,b与a共用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 _ 期末考试 试题 答案
限制150内