C++复习题及答案.docx
- 文档编号:9333925
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:26
- 大小:24.12KB
C++复习题及答案.docx
《C++复习题及答案.docx》由会员分享,可在线阅读,更多相关《C++复习题及答案.docx(26页珍藏版)》请在冰点文库上搜索。
C++复习题及答案
《c++语言程序设计》复习题
一、选择题
1下列字符串中可以用作c++标识符的是。
A_256Bfat/pigCdeleteD5char
2每个C++程序都必须有且仅有一个。
A预处理命令B主函数C函数D语句
3设intn=11,i=4;,则赋值运算n%=i+1;执行后n的值是。
//"+"的优先级比"%="的高
A0B3C2D1
4如果inta=1,b=2,c=3,d=4;,则条件表达式a
a:
c c: d的值为。 //表达式等价于a a: (c c: d);"? : "运算符是右结合的 A2B3C4D1 5在intb[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值为。 A0B5C6D2 6在下列对字符数组进行初始化中,是正确的。 Achars1[]="abcd"Bchars2[3]="xyz" Cchars3[][]={‘a’,‘x’,‘y’}Dchars4[2][3]={"xyz","mnp"} 7在下列表示引用的方法中,是正确的。 已知: intk=1000; Aint&x=k;Bchar&y;Cint&z=1000;Dfloat&t=&k; 8对定义重载函数的下列要求中,是错误的。 A参数的个数可以不同B参数中至少有一个类型不同 C要求参数个数相同时,参数类型不同D要求函数的返回值不同 9在C++中,关于下列设置参数默认值的描述中,正确的是。 A不允许设置参数的默认值B设置参数默认值只能在定义函数时设置 C设置参数默认值时,应该先设置右边的再设置左边的 D设置参数默认值时,应该全部参数都设置 10有关类的说法不正确的是。 A类是一种用户自定义的数据类型 B只有类中的成员函数才能存取类中的私有成员 C在类中,如果不做特别说明,所指的数据均为私有类型 D在类中,如果不做特别说明,所指的成员函数均为公有类型 11类A是类B的友元,类B是类C的友元,则是正确的。 A类B是类A的友元B类C是类A的友元 C类A是类C的友元D以上都不对 12有关析构函数的说法不正确的是。 A析构函数有且只有一个 B析构函数和构造函数一样可以有形参 C析构函数的功能是用来释放一个对象 D析构函数无任何函数类型 13下列各函数中,不是类的成员函数。 A构造函数B析构函数C友元函数D拷贝构造函数 14已知类X中的一个成员函数说明如下: voidSet(X&a),其中X&a的含义是。 A指向X的指针为aB将a的地址赋值给变量Set Ca是类X的对象引用,用来作为Set()的形参 D变量X与a按位相与作为函数Set()的形参。 15一个友元函数能够访问该类的。 A私有成员B保护成员C公有成员D所有成员 16有关类和对象的说法不正确的是。 A对象是类的一个实例B一个类只能有一个对象 C任何一个对象只能属于一个具体的类 D类与对象的关系和数据类型和变量的关系相似 17下列静态数据成员的特性中,是错误的。 A说明静态数据成员时前边要加关键字static来修饰 B静态数据成员在类体外进行初始化 C引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符: : D静态数据成员不是所有对象所共有的//是! ! 18类模板的使用实际上是将类模板实例化成一个具体的。 A类B对象C函数D变量 19通常拷贝构造函数的参数表是。 A某个对象名B某个对象的成员名 C某个对象的引用名D某个对象的指针名 20关于常数据成员的说法不正确的是。 A常数据成员的定义形式与一般常量的定义形式相同,只不过常数据成员的定义必须出现在类体中 B常数据成员必须进行初始化,并且不能被更新 C常数据成员通过构造函数的成员初始化列表进行初始化 //classname(...): data_member(value){/*body*/},带成员初始化列表的构造函数 D常数据成员可以在定义时直接初始化 21已知X类,当程序执行到语句Xarray[3];时,调用了次构造函数, //定义对象数组: classnameobject_arr[N];,其中包含N个对象 A0B1C2D3 22下列程序中说明的公有成员是。 classLocation{ intX; public: voidinit(intX,intY); private: intY; public: intGetX(); intGetY(); } AXBinit(intX,intY) CGetX(),GetY()DB和C都是 23类定义的内容允许被其他对象无限制地存取的是。 Aprivate部分Bprotected部分Cpublic部分D以上都对 24关于对象成员的构造函数的调用顺序,说法正确的是。 A与它们在成员初始化列表中给出的顺序相同。 B与析构函数的调用顺序相同, C与它们在类中的说明顺序相同 D以上说法都不对。 25下面关于纯虚函数和抽象类的描述中,是错误的。 A纯虚函数是一种特殊的虚函数,它没有具体意义 B一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 C抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出 D抽象类是指具有纯虚函数的类 26、在每个C++程序中都必须包含有这样一个函数,该函数的函数名为 。 A.main B.MAIN C.name D.function 27、设x和y均为bool量,则x&&y为真的条件是 。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 28、下面的哪个保留字不能作为函数的返回类型 。 A.void B.int C.new D.long 29、假定a为一个整型数组名,则元素a[4]的字节地址为 。 A.a+4 B.a+8 C.a+16 D.a+32 30、假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为 。 A.3 B.4 C.6 D.9 31、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 。 A.ABoperator+(AB&a,AB&b) B.ABoperator+(AB&a) C.operator+(ABa) D.AB&operator+() 二、填空题 1.C++源程序文件的缺省扩展名为________。 2.程序的三种基本控制结构是: 顺序结构、结构、___________结构。 3.在C++程序中,当函数调用在前、函数定义在后时,则应在主调函数中,在调用前增加对被调函数的___________说明。 4.在调用具有数组参数的函数时,须以作为实在参数。 5.函数递归调用指的是,在函数定义的函数体中又出现直接或间接地调用。 6.C++依据调用中实在参数在上或上的不同来确定调用的是重载函数的哪一个。 7.在函数外定义的变量称为变量。 8.字符串常量是用括起来的字符序列,在字符串的末尾有一个结束标志。 9.当撤消一个含有基类和类对象成员的派生类对象时,将首先完成____________的析构函数定义体的执行,接着完成________________的析构函数定义体的执行,最后完成____________的析构函数定义体的执行。 10.设px是指向一个类动态对象的指针变量,则执行”deletepx;”语句时,将自动调用该类的____________。 11.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为________。 12.假定a为一个整型数组名,则元素a[4]的字节地址为_______。 13.假定一个结构类型的定义为“structD{inta;union{intb;doublec;};D*d[2];};”,则该类型的大小为________字节。 14.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为____________________________。 15.C++语言中的每条基本语句以 作为结束符,每条复合语句以 作为结束符。 16.执行“cout< 17.float和double类型的大小分别为 和 。 18.关系表达式x+y>5的相反表达式为 。 19.假定一个一维数组的定义为“char*a[8];”,则该数组所含元素的个数为 ,所占存储空间的字节数为 。 20.变量分为全局和局部两种, 变量没有赋初值时,其值是不确定的。 21.假定a是一个二维数组,则a[i][j]的指针访问方式为 。 22.假定一个结构类型定义为 “structD{inta;union{intb;doublec;};D*d[2];};”, 则该类型的大小为 字节。 23.对一个类中的数据成员的初始化可以通过构造函数中的 实现,也可以通过构造函数中的 实现。 24.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为 。 25.假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 。 26.设有如下程序段: intk;//1 constintj=3;//2 j--;//3 则1,2,3这3条语句中错误的是。 27.若有: inti; int&j=i; i=1; j=i+2; 则i=,j=. 28.在C++中使用关键字来定义内联函数。 29.下面的程序输出结果为。 #include intabs(intx) {returnx>0? x: -x; } doubleabs(intx) {returnx>0? x: -x; } voidmain() {cout<<"-110的绝对值是: "< cout<<"-110.12的绝对值是: "< } 30.下面程序段中的错误是。 classAA{ inti; private: AAa;//错误! 不能在类定义的内部定义该类的对象 AA*p;//但是可以定义指向该类的指针 }; 31.下面程序段的错误语句是。 classX { private: voidf(); voidg()const; }; Xobj1; constXobj2; obj2.g(); obj2.f();//常对象只能调用类的常成员函数以及类的静态成员函数 三、写出下列表达式的值及运算过程 1.设x=2.5,y=4.7,a=7,b=2: 计算表达式x+a%3+(int)y/(int)x的值 2.设x=2.5,y=4.7,a=7,b=2: 计算表达式! (a>b)||x>y的值 3.设a=1,b=-2,c=1: 计算表达式 x=(d=b*b-4*a*c,(d==0)? -b/(2*a): -b/(2*a)+sqrt(d)/(2*a))的值 4.设有变量说明inta=4,b=2,x=3,y=0: 计算表达式(--a<++b)&&(x 5.inta=1,&b=a,*p=&a,y: 计算表达式y=(a+=b,b+=*p,*p+a)的值 6.设: inta[5]={10,20,30,40,50};int*p=&a[0];计算表达式++*p+*(a+3)的值。 四、读程题,写出程序执行结果 1.#include voidmain() {inta[6]={0,1,2,3,4,5}; inti=0; for(i=0;i<6;i++) { if(i%2==0)a[i]=a[i]+1; elsea[i]=a[i]+2; cout< } } 2.#include voidf(int&a,int&b) { intt=a;a=b;b=t; } voidmain() { intx=10,y=15; f(x,y); cout< } 3.#include voidmain() {inti=10; switch(i) {case9: i++; case10: ++i; case11: i++; default: i=i+1; } cout< } 4.#include #include structWorker{ charname[15];//姓名 intage;//年龄 floatpay;//工资 }; voidmain(){ Workerx; char*t="WeiRong"; intd=45;floatf=1235; strcpy(x.name,t); x.age=d;x.pay=f; cout< } 5.#include voidSB(charch){ switch(ch){ case'A': case'a': cout<<"well! ";break; case'B': case'b': cout<<"good! ";break; case'C': case'c': cout<<"pass! ";break; default: cout<<"bad! ";break; } } voidmain(){ chara1='b',a2='C',a3='f'; SB(a1);SB(a2);SB(a3);SB('A'); cout< } 6.#include #include voidmain(){ char*a[5]={"student","worker","cadre","soldier","peasant"}; char*p1,*p2; p1=p2=a[0]; for(inti=0;i<5;i++){ if(strcmp(a[i],p1)>0)p1=a[i]; if(strcmp(a[i],p2)<0)p2=a[i]; } cout< } 7.#include inta=5; voidmain(){ inta=10,b=20; cout< { inta=0,b=0; for(inti=1;i<6;i++){ a+=i;b+=a; } cout< :
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题 答案