2014-2015第一学期《C++面向对象程序设计》课常测试题一、判断题(20小题,每题1分,共20分)()1.C++中不允许使用宏定义的方法定义符号常量,只能用const来定义符号常量。()2.C++中标识符内的大小写字母是有区别的。()3.C++中的变量在使用之前必须先声明,而且必须在程序开头就声明。()4.不同类型的指针分配到的内存空间的大小是一样的。()5.使用内联函数是以牺牲增大空间开销为代价的。()6.For循环中,循环变量的作用域是该循环的循环体内。()7.静态生存期的标识符的寿命是短的,而动态生存期的标识符的寿命是长的。()8.使用关键字class定义的粗中默认的访问权限是私有的。()9.作用域运算符(::)只能用来限定成员函数所属的类。()10.构造函数和析构函数都不能重载。()11.析构函数是一种函数体为空的成员函数。()12.说明或定义对象时,类名前面不需要加class关键字。()13.对象成员的表示与结构变量成员的表示相同,使用运算符.或-。()14.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。()15.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。()16.可以在类的构造函数中对静态数据成员进行初始化。()17.函数的定义不可以嵌套,类的定义可以嵌套。()18.C++语言中即允许单继承,又允许多继承。对()19、派生类是从基类派生出来,它不能再生成新的派生类。()20.派生类的继承方式中有两种,公有继承和私有继承。二、填空题(5小题,每题2分,共10分)1.关于函数的调用下面不正确的是()。A.由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行B.函数的调用可以在任意函数之间进行,只要有需要C.一个函数可以自己调用自己D.函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示2.在函数的返回值类型与返回值表达式的类型的描述中,()是错误的。A函数的返回值的类型是定义函数时确定的;B.函数的返回值的类型就是返回值表达式的类型;C.函数的返回值表达式的类型与函数返回值类型不同时,表达示类型应转换成函数返回值类型;D.函数的返回值类型决定了返回值表达式的类型。3.派生类的对象对其基类成员中()是可以访问的。A.公有继承中的公有成员B.公有继承中的保护成员C.私有继承中的公有成员D.以上三者都对4.下列虚基类的声明正确的是()。A.classderived:virtualpublicbaseB.virtualclassderived:publicbaseC.classvirtualderived:baseD.classderived:base1virtual5.在公有派生的情况下,有关派生类对象和基类对象的关系的关系,不正确的叙述是()。A.派生类的对象可以赋给基类对象B.派生类的对象可以初始化基类的引用C.派生类的对象的地址可以赋给指向基类的指针D.派生类的对象可以直接访问基类中的成员三、找出错误,并说明错误原因(6小题,20分)1.cinxy;//1ifxycoutx//2elsecouty;//32.intx=1;//1while(x++0)//2cout*//33.floatlevel;//1cinlevel;//2switch(level){case1:coutone;break;//3case1.5:coutoneandahalf;break;//4case2:couttwo;break;//5default:;}//64.classTime//1{public://2Time();//3Time(inth,intm,ints);//4void~Time(int);//5private://6inthours,minutes,seconds;//7};//85.classX{//1public://2intreadme()const{returnm;}//3voidwriteme(inti){m=i;}//4private://5intm;//6};//7voidf(X&x1,constX&x2)//8{//9x1.readme();//10x1.writeme(1);//11x2.readme();//12x2.writeme(2);//13}//146.#includeiostream//1usingnamespacestd;//2classA//3{inta=1;//4staticintb=2;//5};//6intmain()//7{//8A.objA;//9coutobjA.b;//10return0;//11}//12四、运行程序结果(4小题,20分)1..分析下面的程序的循环次数并写出运行结果:#includeiostream.hvoidmain(){intn=0,total=0;do{total=total+n;n++;}while(n++20);couttotal=totalendl;}2..分析下面程序的功能并写出程序的运行结果:#includeiostream.hvoidmain(){inti=100,n=0;while(--i){if(i%5==0&&i%7==0){coutiendl;n++;}}coutn=nendl;}3.#includeiostream#includecstdlibusingnamespacestd;classSample{public:intx,y;Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){4.#includeiostream.hclassbase{intn;public:base(){};base(inta){coutconstructingbaseclassendl;n=a;coutn=nendl;}~base(){coutdestructingbaseclassendl;}};coutx=x,y=yendl;}};intmain(){Samples1(2,3);s1.disp();return0;}classDerived:publicbase{intm;public:Derived(inta,intb):base(a){coutconstructingDerivedclassendl;m=b;coutm=mendl;}~Derived(){coutdestructinqDerivedclassendl;}};voidmain(){Derivedd(26,38);}五、编程题(30分)1从键盘输入一个以字符'$'结尾的字符串,统计其中'0'的个数、'1'的个数……'9'的个数以及其它字符的个数。2.使用函数重载的方法定义两个重名函数,分别求出整型数的两点间距离和浮点型数的两点间距离。提示:两点间距离公式为:d=sqrt((x1-x2)2+(y1-y2)2)。