您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 2009年C++笔试试卷(A卷)答案&解析
湖南大学课程考试试卷课程名称:高等程序设计;课程编码:试卷编号:;考试时间:120分钟题号一二三四五六七八九十总分应得分一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。(完整版)由于学习股给的这两张试卷没有答案。所以是自己写了份参考的,我已经尽量保证正确性。如果有错,希望大家指正。1.通常情况下,函数模板中的类型参数个数不能是(A)。A.0B.1C.3D.4析:一般来说,编译器就是通过参数类型来建立相应的函数,故通常不能没有参数。2.类的指针成员的初始化是通过函数完成的,这个函数通常是(B)。A.析构函数B.构造函数C.其他成员函数D.友元函数3.类型转换函数(A)。A.不能带有参数B.最多只能带有2个参数C.只能带有一个参数D.可以带多个参数析:记住,类型转换函数有三个特点:1必须是成员函数2无返回类型3无参数4.静态成员函数没有(B)。A.返回值B.this指针C.指针参数D.返回类型析:故静态成员函数不能访问类的一般成员(静态成员除外)5.定义类模板时要使用关键字(D)。A.constB.newC.deleteD.template6.下列不具有访问权限属性的是(A)。A.非类成员B.类成员C.数据成员D.函数成员析:答案显然,但非类成员可能能访问类成员,如友元函数7.C++语言鼓励程序员在程序设计时将(C)。A.数据和操作分别封装B.不同类型的数据封装在一起C.数据和操作封装在一起D.不同作用的操作封装在一起8.所谓多态性是指(B)。A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象9.解决二义性问题的方法有(C)。A.只能使用作用域分辨操作符考试中心填写:____年___月___日考试用专业班级:学号:姓名:装订线(题目不得超过此线)湖南大学课程考试试卷湖南大学教务处考试中心B.使用作用域分辨操作符或赋值兼容规则C.使用作用域分辨操作符或虚基类D.使用虚基类或赋值兼容规则10.如果在类CTest的外面函数调用CTest::f();则函数f()是类CTest的(A)。A.静态成员函数B.非静态成员函数C.友元函数D.前面都不正确析:友元函数不输入类成员,故不能那样调用。11.对虚基类的定义,(B)。A.不一定要使用虚函数B.必须使用虚函数C.必须使用privateD.必须使用public12.假定CTest为一个类,并且构造函数的参数无缺省值,则执行CTestobjTest语句时将自动调用该类的(A)。A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数析:无缺省值既有默认值,例如A(inti=0,double=”hello”).13.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(A)。A.都是虚函数B.只有被重新说明时才是虚函数C.只有被重新说明为vittual时才是虚函数D.都不是虚函数析:之后,派生类的该虚函数前的virtual关键字可加可不加14.调用一个成员函数时,使用动态联编的情况是(B)。A.通过对象调用一虚函数B.通过指针或引用调用一虚函数C.通过对象调用一静态函数D.通过指针或引用调用一静态函数析:记住,通过对象调用虚函数不会出现多态(通过指针或者引用才会有多态性)在构造函数里面调用虚函数不会出现多态指定命名域调用不会出现多态15.在派生类中能够直接访问基类的(D)。A.公有成员和私有成员B.保护成员和私有成员C.不可访问的和私有的成员D.保护成员和公有成员二、判断正误题(本大题共10小题,每小题1分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。1.friend属于类的存取权限。(√)2.重载函数要求函数有相同的函数名,但具有不同的参数个数或参数类型。(√)3.常对象可以调用任意成员函数。(×)析:私有的和保护的不行4.在类声明中不但可以说明成员函数的函数头,也可以定义函数体。(√)析:这样将使该函数成为内联函数。5.使用关键字class定义的类中缺省的访问权限是私有(private)的。(√)6.构造函数和析构函数都不能重载。(×)析:构造函数可以重载7.可以在类的构造函数中对静态数据成员进行初始化。(×)析:类头只是申明而已只是表明分配内存的方式并不分配内存,既然没有分配内存何来赋值。正确方式应是在实现文件中省略static关键字但要表明类型和作用域解析操作符来初始化。例如:在类A中声明了staticintx;则要在实现文件中初始化,intA::x=1;8.cout通常与显示器相连,cin通常与键盘相连。(√)9.IO流库重载的插入和析取运算符处理所有的数据类型。(×)10.ostrstream是向字符数组的输出流,istrstream是从字符数组的输入流。()这道题暂时不太清楚对错,有谁知道告诉一下我三、填空题(本大题共10小题,每小题1分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1.编译时多态性是通过虚函数实现的。2.在C++中,如果类的名称是CTest,则此类的析构函数名称为~CTese()。3.使用new建立的动态对象在不用时必须用delete删除,以便释放所占用空间。4.友元函数用关键字friend说明。5.使用C++风格的输入/输出时,在程序中必须包含头文件iostream(不是iostream.h)。6.执行语句coutx86\082\n;后,输出结果为x86(注意并没有换行)。7.用new运算符申请动态对象时,系统将自动调用该对象的构造函数。8.定义内联函数的方法是在函数的返回值类型之前增加关键字inline。9.在多重继承时,若欲使公共基类只在派生类中产生一个拷贝,则应在派生类中将该基类用关键字virtual。(例如classB:publicvirtualA;)10.在C++的I/O流类库中,预定义了4个流,即cin、cout、cerr和clog,其中cerr,clog不可重定向。四、程序阅读题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;classCPoint{public:CPoint(intx=0,inty=0){m_x=x,m_y=y;}intGetX()const{returnm_x;}intGetY()const{returnm_y;}voidSetX(intx){m_x=x;}voidSetY(inty){m_y=y;}private:intm_x;intm_y;};intmain(void){CPointoPoint1;constCPointoPoint2(3,4);coutoPoint1.GetX()endl;oPoint1.SetX(1);coutoPoint1.GetX()endl;oPoint1.SetY(2);coutoPoint1.GetY()endl;coutoPoint2.GetX()endl;coutoPoint2.GetY()endl;return0;}上面程序的输出结果为:012342.阅读下面程序,写出输出结果。#includeiostream.hintf(char*s){char*p=s;while(*p)p++;returnp-s;}voidmain(void){coutf(ABCDEF);}上面程序的输出结果为:6(其实就是一测字符串长度的程序)3.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;classCTest{public:CTest(){m_iCount++;}~CTest(){m_iCount--;}staticintGetCount(){returnm_iCount;}private:staticintm_iCount;};intCTest::m_iCount=0;intmain(void){CTestobj1;coutCTest::GetCount()endl;CTestobj2;coutobj2.GetCount()endl;CTestobj3;coutobj1.GetCount()endl;CTest*p=newCTest;coutp-GetCount()endl;deletep;coutCTest::GetCount()endl;return0;}上面程序的输出结果为:12343析:deletep时将自动调用其所指对象的析构函数。对于一般类型编译器有内置的释放内置方法,而对于用户自定义类型则无能为力,必须得调用其析构函数还销毁对象。4.阅读下面程序,写出输出结果。#includeiostream.hclassShape{public:Shape(){}virtualintArea()=0;};classCircle:publicShape{intr;public:Circle(intc){r=c;}intArea(){returnint(3.1415*r*r);}};classRectangle:publicShape{inth,w;public:Rectangle(intc,intd){h=c;w=d;}intArea(){returnh*w;}};voidfun(Shape&s){couts.Area()endl;}voidmain(){Circlec(4);fun(c);Rectangler(10,2);fun(r);}上面程序的输出结果为:50.26420析:本题的基类为虚基类。正如前面14道选择题一样,通过引用或指针调用虚函数时将引发多态。五、程序改错题(本大题共2小题,每小题5分,共10分)指出下面程序中的错误,说明错误原因,并加以改正。1.下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。#includeiostream//1usingnamespacestd;//2classCBase//3{//4public://5virtualvoidShow()=0;//6};//7classCDerive:publicCBase//8{//9public://10CDerive(intx=0)//11{//12m_x=x;//13}//14voidShow()//15{//16coutm_xendl;//17}//18private://19intm_x;//20};//21intmain(void)//22{//23CBaseobj(10);//24obj.Show();//25return0;//26}//2724行有错,虚基类不能实例化!2.下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。#includeiostream//1usingnamespacestd;//2classCTest//3{//4public://5voidCTest()//6{//7cout构造函数endl;//8}//9~CTest()//10{//11cout析造函数endl;//12}//13};//14intmain(void)//15{//16CTestobj;//17return0;//18}//19第六行有错,构造函数不能有返回类型!六、完善程序题(本大题共5小题,每小题2分,共10分)下面的程序是统计学生中A类学生与B类学生各有多少人。A类学生的标准是平均分在80分以上,其余都是B类学生。程序如下,请完善。#includeiostream.hint&level(intgrade[],intsize,int&tA,int&tB){inti,sum;for(i=0,sum=0
本文标题:2009年C++笔试试卷(A卷)答案&解析
链接地址:https://www.777doc.com/doc-3032282 .html