计算机等级考试-二级C++语言程序设计知识复习题库(附答案)_第1页
计算机等级考试-二级C++语言程序设计知识复习题库(附答案)_第2页
计算机等级考试-二级C++语言程序设计知识复习题库(附答案)_第3页
计算机等级考试-二级C++语言程序设计知识复习题库(附答案)_第4页
计算机等级考试-二级C++语言程序设计知识复习题库(附答案)_第5页
已阅读5页,还剩64页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

st计算机等级考试-二级C++语言程序设计知识复习题库(附答案)单选题1.若要定义一个数组,存储3个double类型的数据,应该使用的关键字是?A、doublea[3];B、double*a[3];C、doublea[3][1];D、doublea[][][1];参考答案:A2.下列关于模板的描述中,错误的是?A、模板分为函数模板和类模板B、模板提高了代码的复用性C、模板必须显式实例化才能使用D、模板是参数化多态工具参考答案:C3.C++语言中,do...while循环的特点是?A、先判断条件后执行循环体B、至少执行一次循环体C、循环次数一定为0D、不能用于计数循环参考答案:B4.设intm=10,n=20;m^=n;n^=m;m^=n;,交换后m,n的值分别是?A、10,20B、20,10C、0,30D、30,0参考答案:B5.在STL算法for_each中,如果遍历元素需要修改元素值,函数参数应该如何设计?A、参数为const引用B、参数为引用C、参数为值传递D、参数必须是指针参考答案:B6.若要在C++中定义一个常量整型指针p,以下定义正确的是?A、constint*p;B、intconst*p;C、int*constp;D、constint*constp;参考答案:D7.下列关于类的描述中,正确的是?A、类的成员函数都可以直接访问类中所有的成员B、类的成员变量都是公有的C、类的成员变量默认是私有的D、类中不能包含成员函数参考答案:C8.关于类成员访问权限public、protected、private,下列说法正确的是?A、public成员可以在任何地方访问B、protected成员可以在类内和类外访问C、private成员只能在类内访问D、protected成员可以在类外访问参考答案:A9.下列代码的输出结果是?#include<iostream>usingnamespacestd;intmain(){inta=10;int&r=a;constint&cr=20;r=30;cout<<a<<""<<cr;return0;}A、1020B、3030C、1010D、3020参考答案:D10.若有定义inta[3][2]={1,2,3,4,5,6};,则a[1][1]的值是?A、2B、4C、5D、6参考答案:B11.在C++标准库<algorithm>中,用于对容器元素进行降序排序的函数是?A、sort()B、reverse()C、min_element()D、unique()参考答案:A12.下列关于C++函数参数传递方式的描述中,正确的是?A、引用传递不会创建临时副本,效率最高,且可以改变实参的值B、值传递方式中,形参的值发生改变会影响实参的值C、指针传递与引用传递本质相同,都是直接访问实参D、函数参数传递只能使用值传递和指针传递两种方式参考答案:A13.模板参数T在模板函数中可以通过哪种方式使用?A、T只能作为函数参数类型B、T只能作为返回值类型C、T既可以是参数类型也可以是返回值类型D、T只能是基本数据类型参考答案:C14.构造函数可以被重载吗?A、可以B、不可以C、只有静态构造函数可以D、只有虚构造函数可以参考答案:A15.下列关于函数参数传递的描述中,正确的是?A、值传递是单向的,无法修改实参B、引用传递是单向的,无法修改实参C、指针传递不能改变实参的地址D、只有值传递参考答案:A16.若有定义intm=10;,则sizeof(m)的结果是?A、10B、4C、8D、2参考答案:B17.在STL中,std::map的底层实现通常是?A、数组B、链表C、红黑树D、哈希表参考答案:C18.C++程序执行开始和结束的入口点分别是?A、main,mainB、main,endC、start,endD、init,terminate参考答案:A19.下列关于C++预处理器的说法,错误的是?A、预处理指令以#开头B、预处理指令在编译前执行C、#include包含的是源代码文件D、#define可以定义宏参考答案:C20.C++中,函数重载指的是?A、函数名相同,参数个数不同B、函数名相同,参数个数相同C、函数名不同D、参数类型相同参考答案:A21.下列关于new和delete运算符的描述,正确的是?A、new分配的内存必须手动调用malloc释放B、delete释放内存后,指针变量依然指向原地址C、对于数组,delete只能用于单个对象的指针D、new会调用构造函数,delete会调用析构函数参考答案:D22.设intarr[]={10,20,30};,则sizeof(arr)/sizeof(arr[0])的结果是?A、10B、20C、3D、40参考答案:C23.C++中std::cout默认输出到哪里?A、屏幕B、文件C、网络端口D、内存参考答案:A24.关于const关键字,下列说法正确的是?A、constint*p表示指针指向的值不可变B、int*constp表示指针本身的指向不可变C、constint*constp表示指针指向的值和指向都不可变D、const只能修饰基本数据类型参考答案:B25.下列关于模板函数的声明中,正确的是?A、template<classT>voidfunc(Ta);B、template<typenameT>voidfunc(Ta);C、voidfunc(Ta){};D、template<T>voidfunc(Ta);参考答案:B26.在STL中,std::map底层通常使用的数据结构是?A、数组B、链表C、红黑树D、哈希表参考答案:C27.关于友元函数,下列说法正确的是?A、友元函数可以是类的成员函数B、友元函数可以访问类的所有成员C、友元函数不受访问控制修饰符的限制D、友元函数必须在类内部定义参考答案:C28.设有类定义classTest{public:staticintcount;intdata;};intTest::count=0;,访问Test::count需要使用的关键字是?A、Test::countB、countC、staticD、this->count参考答案:A29.关于多重继承,可能出现的问题之一是?A、只有基类B、二义性C、无法构造D、类型转换失败参考答案:B30.下列代码的输出结果是?inta=5;intb=10;a=a+b;b=a-b;a=a-b;cout<<a<<""<<b;A、105B、510C、1515D、55参考答案:A31.在C++中,负责逻辑运算的运算符是?A、逻辑与、逻辑或、逻辑非B、算术运算符C、关系运算符D、赋值运算符参考答案:A32.设有定义inta[3][4]={0};,则数组元素a[1][2]的初值是?A、0B、1C、随机值D、NULL参考答案:A33.下列关于switch语句的描述中,错误的是?A、switch后面的括号内可以是整型或字符型表达式B、case后面的常量表达式可以是变量C、每个case后必须要有break语句D、default语句可以没有参考答案:B34.在C++异常处理中,catch(...)的作用是?A、捕获所有特定类型的异常B、捕获任意类型的异常C、必须位于其他catch块之后D、不允许出现在try块中参考答案:B35.C++中,cin用于?A、输出B、输入C、文件操作D、内存管理参考答案:B36.关于虚函数,下列说法错误的是?A、虚函数必须是类的成员函数B、静态成员函数不能是虚函数C、构造函数可以是虚函数D、析构函数可以是虚函数参考答案:C37.下列描述中,属于值传递特征的是?A、形参与实参共用同一个存储单元B、形参是实参的副本C、传递的是地址D、形参和实参完全一样参考答案:B38.关于模板函数,下列说法正确的是?A、模板函数不能有默认参数B、模板函数的参数类型必须是intC、模板函数可以处理多种数据类型D、实例化模板函数时必须显式指定所有模板参数参考答案:C39.若函数声明voidswap(int&x,int&y),下列调用方式正确的是?A、swap(1,2)B、swap(a,b)C、swap(*x,*y)D、swap(int,int)参考答案:B40.下列关于函数重载的描述中,正确的是?A、函数重载是指函数名相同,参数个数或类型不同,返回值可以不同B、函数重载是指函数名相同,参数个数相同,函数体不同C、函数重载是指函数名不同,参数个数或类型不同D、C++不支持函数重载参考答案:A41.下列关于结构体的描述中,错误的是?A、结构体可以包含不同类型的数据成员B、结构体变量之间可以直接用=赋值C、结构体变量不能作为参数传递D、结构体定义时需要使用struct关键字参考答案:C42.在面向对象编程中,封装的主要目的是什么?A、提高代码运行速度B、隐藏实现细节,保护数据安全,仅对外提供接口C、允许函数重载D、实现代码复用参考答案:B43.若x=5,y=0,则逻辑表达式!x&&y的值是?A、0B、1C、trueD、false参考答案:A44.若有定义intk=0;,则while循环while(!k)k++;执行的次数是?A、0B、1C、无限次D、2参考答案:B45.下列代码段执行后的输出结果是?intx=0;while(x++<3)cout<<x;A、123B、1234C、0123D、234参考答案:A46.若有定义struct{intx,y;}s1={3,4},s2;,则语句s2=s1;的功能是?A、复制地址B、赋值所有成员C、比较大小D、交换内容参考答案:B47.若有定义charstr[]="Hello";,则strlen(str)的值是?A、5B、6C、7D、4参考答案:A48.std::vector<int>v(5,10);初始化后,v的大小和内容是?A、大小为5,内容全为0B、大小为5,内容全为10C、大小为10,内容全为10D、大小为1,内容为10参考答案:B49.下列运算符中,优先级最高的是?A、逻辑与(&&)B、逻辑或(||)C、逻辑非(!)D、加法(+)参考答案:C50.若有定义intarr[5]={1,2,3,4,5};,则表达式arr[2]+*(&arr[2])的值是?A、6B、8C、10D、12参考答案:A51.C++中,析构函数的特征是?A、函数名与类名相同B、不带任何参数C、没有返回类型D、以上全是参考答案:D52.若要使用vector容器,需要包含的头文件是?A、<vector>B、<list>C、<deque>D、<map>参考答案:A53.下列哪种类型转换是安全的?A、强制类型转换(const_cast)B、隐式类型转换C、重启类型转换(reinterpret_cast)D、指针类型强制转换(C风格)参考答案:B54.若inta=10;int&r=a;r=20;,则a的值是?A、10B、20C、0D、随机参考答案:B55.C++中#include<iostream>与#include"myheader.h"的主要区别是?A、<>用于系统头文件,""用于用户头文件B、<>用于用户头文件,""用于系统头文件C、<>必须放在源文件开头,""可以放在中间D、两者功能完全相同,无区别参考答案:A56.若有定义vector<int>v;v.push_back(10);,则v的大小是?A、0B、1C、10D、2参考答案:B57.C++中,const关键字修饰的成员函数允许?A、修改数据成员B、调用非const成员函数C、修改常量数据成员D、访问所有成员参考答案:B58.设structPoint{intx;inty;};,下列定义正确的是?A、Pointp={1,2};B、Pointp={1,2.0};C、Pointp={1};D、Pointp={1,2,3};参考答案:A59.若有定义inta[5]={1,2,3,4,5};,则a[2]的值是?A、1B、2C、3D、4参考答案:C60.下列关于纯虚函数的描述,正确的是?A、纯虚函数必须有函数体实现B、包含纯虚函数的类不能实例化对象C、纯虚函数只能出现在基类中D、派生类必须实现基类的所有纯虚函数参考答案:B61.在面向对象程序设计中,“封装”的主要目的是?A、隐藏数据细节,仅提供公共接口B、继承父类的所有属性C、实现代码的重用D、处理程序运行时的错误参考答案:A62.下列关于构造函数和析构函数的调用顺序,说法正确的是?A、构造函数和析构函数的调用顺序随机B、构造函数从派生类到基类调用,析构函数从基类到派生类调用C、构造函数从基类到派生类调用,析构函数从派生类到基类调用D、两者均从基类开始调用参考答案:C63.下列程序片段执行后,输出结果是?inta=10,b=20;int&c=a;c=b;cout<<a;A、10B、20C、编译错误D、随机值参考答案:B64.C++程序的入口函数是?A、mainB、startC、InitD、begin参考答案:A65.下列哪种容器是链式结构,不支持随机访问?A、vectorB、dequeC、listD、array参考答案:C66.C++中cin>>a语句读取输入时,遇到以下情况停止读取?A、空格B、回车键C、标签D、字母参考答案:B67.已知int*p,a=10;p=&a;,则表达式*p的值是?A、a的地址B、10C、p的地址D、未定义参考答案:B68.抽象类不能用来做什么?A、定义接口B、实例化对象C、作为基类派生子类D、定义纯虚函数参考答案:B69.若类A中定义了一个友元函数voidfriendFunc(A&obj);,以下哪种方式调用该函数是合法的?A、A::friendFunc(obj);B、obj.friendFunc(obj);C、friendFunc(obj);D、A.friendFunc(obj);参考答案:C70.下列代码的输出结果是?inta=10,b=20;int&r=a;r=b;cout<<a<<""<<b;A、1020B、2020C、1010D、2010参考答案:B71.若有定义int*p=newint(5);,则deletep;后,指针p的状态是?A、依然指向5B、指向一个随机数C、指向NULLD、未定义(悬垂指针)参考答案:D72.若定义classA{public:virtualvoidfunc(){}};classB:publicA{};,则Bb;b.func();调用的是?A、类A的func函数B、类B的func函数C、编译错误D、随机调用参考答案:A73.若有定义classA{private:intx;public:voidsetX(intn){x=n;}};,则setX函数是?A、构造函数B、析构函数C、成员函数D、友元函数参考答案:C74.在C++中,下列说法正确的是?A、引用只能作为函数参数B、引用一经定义,就不能再绑定到其他对象C、引用通常在定义时被初始化,且初始化后不能再改变指向D、引用不是内存中的一个别名参考答案:C75.若要定义一个只能指向整型数据的指针,应该使用的关键字是?A、float*B、char*C、int*D、double*参考答案:C76.下列关于const修饰符的描述,错误的是?A、constint*p表示指针指向的值是常量B、int*constp表示指针本身是常量C、constint*constp表示指针和指向的值都是常量D、constinta表示变量a可以被修改,只是编译器不允许参考答案:D77.在C++的switch语句中,case标签后必须跟什么?A、一个变量B、一个常量表达式C、一个函数D、一个循环语句参考答案:B78.C++中iostream头文件中,cin对象的默认输入流设备是?A、键盘B、屏幕C、磁盘文件D、打印机参考答案:A79.若类中声明了一个静态成员函数,下列说法正确的是?A、静态成员函数只能访问静态成员变量B、静态成员函数可以访问非静态成员变量C、静态成员函数必须通过对象调用D、静态成员函数没有this指针参考答案:D80.设有类指针ClassA*p=newClassA;,要释放该对象并置空指针,正确的代码是?A、deletep;B、delete*p;C、deletep;p=null;D、p.delete();参考答案:A81.C++中,命名空间(namespace)的作用是?A、定义全局变量B、解决命名冲突C、定义类的私有成员D、定义函数指针参考答案:B82.若要在类A中声明一个方法voidprint()const;,这表示该方法是?A、静态方法B、临时方法C、常成员函数D、友元函数参考答案:C83.如果一个类没有定义析构函数,编译器会提供?A、一个运行时错误B、一个空析构函数C、一个带有默认参数的析构函数D、一个删除的析构函数参考答案:B84.在C++中,字符串常量"Hello"在内存中占用几个字节?A、5B、6C、4D、7参考答案:B85.若要打开一个名为data.txt的文件进行读取,应该使用ifstream的哪个构造函数?A、ifstream("data.txt",ios::out);B、ifstream("data.txt",ios::in);C、ifstream("data.txt");D、ifstream("data.txt",ios::app);参考答案:B86.C++的标准异常类中,std::runtime_error是哪个类的直接派生类?A、std::logic_errorB、std::exceptionC、std::invalid_argumentD、std::out_of_range参考答案:B87.关于纯虚函数,下列说法正确的是?A、纯虚函数没有函数体B、包含纯虚函数的类不能被实例化C、纯虚函数必须有函数体,否则无法通过编译D、派生类必须实现基类的所有纯虚函数参考答案:B88.以下关于虚函数的描述中,错误的是?A、虚函数必须在基类中声明,并在派生类中重新定义B、虚函数可以是静态成员函数C、通过基类指针调用虚函数时,会执行动态绑定D、虚函数不能是构造函数参考答案:B89.若有定义int*p,a[5];,语句p=a;的功能是?A、将数组a的首地址赋值给pB、将数组a的第一个元素赋值给pC、将p的值赋值给数组aD、将p的地址赋值给数组a参考答案:A90.若有定义classA{public:virtual~A(){cout<<"A";}};classB:publicA{public:~B(){cout<<"B";}};,执行A*pa=newB;deletepa;的输出是?A、ABB、BAC、BD、A参考答案:A91.若要使用vector容器的动态数组特性,需要包含的头文件是?A、#include<string>B、#include<vector>C、#include<list>D、#include<map>参考答案:B92.C++中#include<iostream>和#include"myheader.h"的主要区别是?A、前者包含标准库,后者包含用户自定义文件B、前者是编译指令,后者是注释C、两者完全一样D、前者是头文件保护,后者是宏定义参考答案:A93.C++标准库中,用于处理输入输出的头文件是?A、<iostream>B、<fstream>C、<string>D、<vector>参考答案:A94.设std::stringstr="Hello";,执行str+='!'后,str的值是?A、HelloB、!C、Hello!D、编译错误参考答案:C95.若要定义一个类指针p指向对象obj,并调用其成员函数func(),正确的方式是?A、p.func();B、obj.func();C、p->func();D、p.func();参考答案:C96.C++中,封装主要利用了?A、指针B、引用C、访问控制权限D、数组参考答案:C97.C++语言中,用于实现分支结构的语句是?A、ifB、forC、whileD、switch参考答案:A98.若要在一个类的析构函数中打开文件,必须在何时关闭文件?A、在构造函数中B、在析构函数中C、在new语句处D、在程序退出时参考答案:B99.若inta[5]={1,2,3,4,5};,则表达式*(a+2)的值是?A、2B、3C、4D、5参考答案:B100.下列关于数组的描述中,错误的是?A、数组名代表数组的首地址B、数组下标从0开始C、数组的大小在定义时确定,运行时不可改变D、可以直接用=将一个数组赋值给另一个数组参考答案:D101.下列关于虚函数的描述中,错误的是?A、虚函数必须在基类中声明B、派生类可以重写基类的虚函数C、构造函数不能是虚函数D、虚函数必须有返回值参考答案:D102.关于new和delete,下列说法正确的是?A、new可以分配多个连续的内存块B、delete可以释放多个连续的内存块C、必须手动释放new分配的内存D、new和delete必须成对使用,且类型必须一致参考答案:D多选题1.关于指针与引用的描述,正确的是?A、引用必须初始化,且初始化后不能改变B、指针可以为空(NULL)C、引用更像是一个别名D、使用指针传递参数时,可以改变实参的值参考答案:ABCD2.关于STL(标准模板库)容器,下列说法正确的是?A、vector是动态数组,支持随机访问B、list是双向链表,不支持随机访问C、map是关联数组,键值唯一D、deque是双端队列,在两端插入删除效率较高参考答案:ABCD3.下列关于位域的描述,正确的是?A、允许在一个字节中存储多个不同类型的数据B、位域的存储方式依赖于编译器C、位域可以声明为staticD、位域没有类型(只能是int)参考答案:ABC4.关于friend关键字,下列描述正确的是?A、friend可以声明在类的内部B、被friend声明的函数可以访问类的私有成员C、被friend声明的类可以访问当前类的私有成员D、friend关系是双向的参考答案:ABC5.关于C++中的string类,下列描述正确的是?A、string对象可以直接进行赋值和比较B、length()和size()方法功能相同C、substr()方法可以提取子串D、find()方法用于查找子串的位置参考答案:ABCD6.下列关于位运算符的描述,正确的是?A、&是按位与运算B、|是按位或运算C、^是按位异或运算D、~是按位取反运算参考答案:ABCD7.关于类的构造函数和析构函数,下列说法正确的是?A、构造函数没有返回类型B、析构函数名称与类名相同,但在前面加波浪号(~)C、一个类可以有多个构造函数D、析构函数在对象销毁时自动调用参考答案:ABCD8.关于this指针,下列描述正确的是?A、这是一个隐含的指针,指向正在被调用的成员函数所属的对象B、在类成员函数内部可以使用this指针C、this指针不能在静态成员函数中使用D、this指针的类型是当前类的指针参考答案:ABCD9.关于指向指针的指针(二级指针),下列描述正确的是?A、定义方式如int**p;B、通过*p可以访问指针变量本身C、通过**p可以访问指针指向的数据D、只有一级指针才能访问数据参考答案:ABC10.以下关于构造函数的描述,正确的是?A、构造函数的名字必须与类名相同B、构造函数可以有返回类型,但不能有返回值C、构造函数可以重载D、每个类都必须定义构造函数参考答案:AC11.关于成员函数重载,下列描述正确的是?A、类中可以有多个同名但参数不同的成员函数B、同一个类中不能有两个构造函数有相同的参数列表和返回类型C、静态成员函数可以被重载D、析构函数不能被重载参考答案:ABCD12.关于运算符重载,下列描述正确的是?A、运算符重载不能改变运算符的优先级和结合性B、重载后运算符的参数个数可以少于原运算符C、预定义的运算符(如+,-,*,/)可以被重载D、运算符重载不能改变运算符的操作数类型参考答案:AC13.下列关于宏定义的描述,正确的是?A、#defineMAX(a,b)((a)>(b)?(a):(b))B、宏定义在编译前进行文本替换C、宏定义没有类型检查D、使用宏可以提高程序运行效率参考答案:ABCD14.关于std::shared_ptr,下列说法正确的是?A、采用引用计数管理内存B、当引用计数为0时释放内存C、支持拷贝构造D、必须手动释放内存参考答案:ABC15.关于异常处理机制,下列描述正确的是?A、throw语句用于抛出异常对象B、catch块用于捕获特定类型的异常C、程序执行到throw时会立即终止D、如果没有catch捕获,程序会调用terminate函数参考答案:ABD16.关于静态成员变量,下列描述正确的是?A、静态成员变量属于类而非对象B、静态成员变量必须在类外定义C、所有对象共享同一份静态成员变量D、静态成员函数不能访问非静态成员变量参考答案:ABCD17.关于位运算符,下列描述正确的是?A、&是按位与运算B、|是按位或运算C、^是按位异或运算D、~是按位取反运算参考答案:ABCD18.关于C++中的模板,下列描述正确的是?A、函数模板可以实例化为不同类型的函数B、类模板可以实例化为不同的类C、模板参数可以包含类型参数和非类型参数D、模板定义和实现必须都在头文件中参考答案:ABC19.下列关于指针运算的描述,正确的是?A、指针可以加上整数(数组下标操作)B、指针可以减去整数C、两个指针相减的结果是它们之间的元素个数D、指针可以相互赋值参考答案:ABCD20.下列关于标准输入输出流对象,下列说法正确的是?A、cin是输入流对象B、cout是输出流对象C、cerr是输出流对象,通常用于错误信息D、clog是输出流对象,输出到屏幕参考答案:ABC21.下列关于C++引用的描述,正确的是?A、引用必须初始化B、引用一旦初始化,就不能改变指向C、引用的大小等于它所引用对象的大小D、引用不是新的变量类型,而是已有变量的别名参考答案:ABCD22.C++中的头文件包含指令,下列说法正确的是?A、#include<iostream>包含系统库头文件B、#include"myheader.h"包含用户自定义头文件C、使用#include包含头文件时,不能避免重复包含D、头文件中通常避免包含过多的实现代码参考答案:ABD23.关于noexcept异常规范,下列描述正确的是?A、声明函数不会抛出异常B、如果函数实际抛出异常,将调用std::terminateC、noexcept可以提高代码性能D、noexcept仅适用于成员函数参考答案:ABC24.下列关于类和对象的说法,正确的是?A、类是对象的蓝图或模板B、对象是类的实例C、类定义后可以直接使用,不需要实例化D、一个类可以实例化出多个对象参考答案:ABD25.下列关于虚析构函数的描述,正确的是?A、如果基类指针指向派生类对象,基类的析构函数应该是虚函数B、如果不使用虚析构函数,delete指向派生类对象的基类指针时,只调用基类的析构函数C、虚析构函数可以防止内存泄漏D、析构函数不能是纯虚函数参考答案:ABC26.关于Friend类,下列描述正确的是?A、友元类可以访问另一个类的所有成员B、友元关系是单向的,不具有传递性C、成员函数可以是友元D、友元可以增加程序的封装性参考答案:ABC27.关于类型转换,下列说法正确的是?A、C风格转换(如(int)x)功能强大但安全性差B、static_cast可以用于基类指针到派生类指针的转换(需谨慎)C、const_cast可以去除变量的const属性D、reinterpret_cast用于低级内存重解释,如将指针转为整数参考答案:ACD28.关于条件运算符(?:),下列描述正确的是?A、条件运算符是三目运算符B、表达式形式为:条件表达式?表达式1:表达式2C、条件为真时返回表达式1,否则返回表达式2D、条件运算符优先级高于赋值运算符参考答案:ABCD29.关于C++函数原型,下列说法正确的是?A、函数原型必须包含函数名B、函数原型必须包含参数列表C、函数原型必须包含返回类型D、函数原型必须包含函数体参考答案:ABC30.下列关于new操作符的内存分配方式,说法正确的是?A、new分配的内存位于堆上B、new分配的内存默认是未初始化的C、new可以直接分配数组D、delete分配的单个对象内存后,该内存变为未定义参考答案:ABC31.下列关于模板的描述,正确的是?A、模板分为函数模板和类模板B、类模板的实例化需要显式指定模板参数C、函数模板的实例化可以是自动的D、模板只能用于定义函数或类参考答案:ABC32.关于结构体(struct)与联合体(union),下列描述正确的是?A、结构体中的各成员占用不同的内存空间B、联合体中的各成员占用同一块内存空间C、结构体的大小至少大于等于各成员大小之和D、联合体的大小至少大于等于最大成员的大小参考答案:ABCD33.关于静态成员变量和静态成员函数,下列说法正确的是?A、静态成员变量属于类,不属于对象B、静态成员变量必须在使用前初始化C、静态成员函数只能访问静态成员变量D、静态成员函数可以通过对象调用,也可以通过类名调用参考答案:ABCD34.关于C++的宏定义(#define),下列描述正确的是?A、宏定义不进行类型检查B、宏定义在编译前进行文本替换C、宏定义可以定义函数(函数式宏)D、宏定义可以接受参数参考答案:ABCD35.下列函数重载的例子中,合法的是?A、intfunc(inta){...}B、doublefunc(doublea,intb){...}C、voidfunc(inta,doubleb){...}D、intfunc(chara){...}参考答案:ABCD36.下列关于数组的描述,正确的是?A、C++数组下标总是从0开始B、数组名可以作为指向数组首元素的常量指针使用C、定义数组时,长度必须为整型常量表达式D、数组元素的类型必须一致参考答案:ABCD37.关于智能指针std::unique_ptr,下列说法正确的是?A、独占所有权B、不支持拷贝构造C、支持移动语义D、可以自动释放所管理的内存参考答案:ABCD38.下列关于模板元编程的描述,正确的是?A、利用编译期计算代替运行期计算B、通常使用模板递归实例化来实现C、可以提高程序运行效率D、不能在运行时使用参考答案:ABC39.关于标准的输入输出流格式控制,下列描述正确的是?A、使用manipulators(如std::setw,std::fixed)进行格式控制B、std::endl既是格式控制也是换行C、setprecision控制浮点数精度D、hex用于设置输出为十六进制参考答案:ABCD40.下列关于指针数组和数组指针的描述,正确的是?A、int*p[4];是指针数组,每个元素是一个int指针B、int(*p)[4];是数组指针,指向包含4个int的数组C、int*p[4]等价于int*p[4]={0};D、数组指针只能指向多维数组的行参考答案:ABCD41.下列关于C++内存布局(栈、堆、静态区、全局区)的描述,正确的是?A、局部变量存储在栈上B、new分配的内存存储在堆上C、全局变量和静态变量存储在静态存储区D、函数调用栈在函数返回后会自动释放参考答案:ABCD42.下列关于逻辑表达式的描述,正确的是?A、逻辑非(!)的优先级高于逻辑与(&&)B、逻辑与(&&)的优先级高于逻辑或(||)C、逻辑与(&&)是从左到右结合D、逻辑或(||)是从左到右结合参考答案:ABCD43.下列关于继承的描述,正确的是?A、派生类可以继承基类的所有成员B、私有继承中,基类的公有成员在派生类中变为私有C、保护成员在类外无法访问D、菱形继承会导致二义性问题参考答案:ABCD44.下列关于结构化绑定(C++17),下列描述正确的是?A、用于将对象解构为多个变量B、常用于数组或元组C、声明方式为auto[a,b]=t;D、源对象在解构后会被删除参考答案:ABC45.关于虚函数(virtual),下列描述正确的是?A、虚函数必须在基类中声明B、派生类可以重写基类的虚函数C、使用对象指针调用虚函数时会发生静态绑定D、使用对象引用调用虚函数时会发生动态绑定参考答案:ABD46.关于运算符new[]和delete[],下列描述正确的是?A、new[]用于分配数组内存B、delete[]用于释放数组内存C、必须使用delete[]配对new[]D、使用delete释放new[]分配的内存也是正确的参考答案:ABC47.下列关于模板函数与普通函数的重载,说法正确的是?A、当调用重载模板函数时,编译器可以选择普通函数或模板函数B、模板函数的特化可以覆盖普通函数的重载C、优先匹配非模板函数D、模板参数推导失败可能导致重载决议失败参考答案:ACD48.下列关于const关键字的描述,正确的是?A、可以定义const常量,必须初始化B、constint*p;表示指针p所指向的数据不能修改C、int*constp;表示指针p本身不能修改,但指向的数据可以修改D、函数参数声明为const引用时,可以防止在函数体内修改该引用所指向的对象参考答案:ABCD49.关于switch语句,下列描述正确的是?A、case子句的值必须常量B、可以使用default语句处理其他情况C、每个case后必须跟break语句D、case子句的顺序可以任意参考答案:ABD50.关于std::mutex和线程同步,下列说法正确的是?A、mutex是互斥锁B、lock()和unlock()必须成对使用C、可以使用std::lock_guard管理锁的生命周期D、释放锁意味着锁不再被保护参考答案:ABC51.关于main函数,下列描述正确的是?A、main函数是程序执行的入口B、main函数的返回类型可以是intC、main函数不接受任何参数D、main函数通常没有参数,但也可以接受参数(argc,argv)参考答案:ABD52.关于std::function和函数指针,下列说法正确的是?A、std::function是泛型函数包装器B、函数指针只能指向特定签名的函数C、std::function可以包装Lambda表达式D、函数指针不能直接赋值给std::function参考答案:ABC53.关于C++中虚函数的特性,说法正确的是?A、虚函数必须是类的成员函数B、静态成员函数不能是虚函数C、构造函数可以是虚函数D、可以通过指针调用虚函数参考答案:ABD54.下列哪些属于C++标准库容器?A、vectorB、stringC、arrayD、queue参考答案:ABCD55.关于类成员函数的const修饰符,下列描述正确的是?A、const成员函数可以访问非const成员变量B、const成员函数承诺不修改对象状态C、const成员函数可以重载非const版本D、const对象只能调用const成员函数参考答案:BCD56.下列关于C++代码优化的描述,正确的是?A、减少不必要的对象拷贝(如使用移动语义)B、使用const限制变量的可变性C、避免在循环中进行昂贵的计算D、越多的内联函数程序运行越快参考答案:ABC57.下列关于文件操作的描述,正确的是?A、使用ofstream创建输出流时,如果文件不存在会自动创建B、使用ifstream打开文件时,如果文件不存在会报错C、使用fstream可以同时读写文件D、文件流操作后需要显式调用close()关闭文件参考答案:ABC58.下列关于new和delete操作符的描述,正确的是?A、new会自动调用对象的构造函数B、delete会自动调用对象的析构函数C、使用new分配的内存必须使用delete释放D、delete释放的内存地址可以是NULL参考答案:ABCD59.关于枚举类型,下列描述正确的是?A、枚举类型是一组命名的整型常量B、枚举变量的值只能是枚举列表中的值C、枚举的第一个值默认为0D、枚举变量可以被赋值为非枚举类型的值参考答案:ABC60.关于C++的命名空间,下列描述正确的是?A、命名空间用于解决名称冲突B、usingnamespace声明将命名空间成员引入当前作用域C、命名空间可以嵌套定义D、命名空间是可以在运行时动态关闭的参考答案:ABC61.关于C++程序的编译过程,下列说法正确的是?A、源代码经过预处理生成.i文件B、源代码经过编译生成汇编代码C、汇编代码经过汇编生成机器码D、机器码经过链接生成可执行文件参考答案:ABCD62.关于结构体与类的区别,下列说法正确的是?A、默认情况下,struct的成员是public,class的成员是privateB、struct可以继承,class也可以继承C、struct不能定义构造函数和析构函数D、struct不能有模板成员参考答案:AB63.在C++中,关于const关键字的描述,正确的是?A、const修饰的变量是常量,初始化后不能修改B、const修饰的指针变量,其指向可以修改C、const修饰的函数参数,表示在函数内部不能修改该形参D、const修饰类的成员函数,该函数不能修改任何数据成员参考答案:ACD64.下列关于C++语言数据类型的描述中,正确的是?A、bool类型占用1个字节B、shortint和longint占用的字节数一定相同C、char类型可以用来存储负数D、float类型占用4个字节参考答案:ACD65.关于C++的输入输出流,下列描述正确的是?A、cin是istream类的对象,用于标准输入B、cout是ostream类的对象,用于标准输出C、endl用来输出换行符并刷新缓冲区D、<<运算符用于从流中提取数据参考答案:ABC66.关于文件打开模式(fopen中的"mode"),下列描述正确的是?A、"r"表示只读打开B、"w"表示写入打开,若文件存在则清空C、"a"表示追加模式D、"r+"表示读写打开,文件必须存在参考答案:ABCD67.下列关于转换运算符的描述,正确的是?A、允许将类类型转换为其他类型B、转换函数必须是类的成员函数C、转换函数不能有返回类型D、转换函数可以是const成员函数参考答案:ABCD68.关于纯虚函数和抽象类,下列描述正确的是?A、纯虚函数是带有一个(或多个)初始化为0的函数的虚函数B、包含纯虚函数的类是抽象类C、抽象类不能实例化对象D、抽象类可以派生出新的抽象类参考答案:ABCD69.关于多态性,下列说法正确的是?A、程序运行时的多态性是通过虚函数实现的B、编译时的多态性是通过函数重载和模板实现的C、虚函数表是在编译时生成的D、虚表指针是在对象中分配的参考答案:ABCD70.以下关于C++流类库的描述,正确的是?A、ios_base是所有输入输出流对象的基类B、cin和cout分别是输入流和输出流对象C、插入运算符"<<"通常用于从标准输入设备读取数据D、提取运算符">>"通常用于向标准输出设备写入数据参考答案:AB71.下列关于Lambda表达式的描述,正确的是?A、Lambda表达式定义了一种匿名函数B、Lambda表达式包含捕获列表C、Lambda表达式可以没有返回类型D、Lambda表达式可以赋值给函数指针参考答案:ABC72.关于C++链表操作,下列说法正确的是?A、在链表头部插入节点通常需要更新头指针B、删除链表中间节点需要保存前驱节点C、循环链表的最后一个节点的next指针指向头节点D、单链表可以从尾向前遍历参考答案:ABC73.下列哪些关键字用于控制类成员的访问权限?A、publicB、protectedC、privateD、friend参考答案:ABC74.下列关于try-catch异常处理机制的描述,正确的是?A、try块中检测可能发生的异常B、catch块用于捕获并处理异常C、catch(...)可以捕获所有类型的异常D、throw语句用于抛出异常参考答案:ABCD75.关于运算符重载,下列说法正确的是?A、运算符重载是函数重载的一种B、可以重载所有C++运算符C、不能改变运算符的基本运算语义D、重载后运算符的操作数个数可以改变参考答案:AC76.关于模板参数推导,下列描述正确的是?A、数组参数推导会忽略数组大小B、函数参数推导可以直接推导出引用C、const可以被推导出来D、数组参数推导会将数组退化为指针参考答案:ACD77.关于new和delete运算符,下列描述正确的是?A、new自动调用构造函数B、delete自动调用析构函数C、new用于动态分配内存,delete用于释放内存D、delete释放内存后,指针的值变为NULL参考答案:ABC78.关于FILE结构体(文件流),下列描述正确的是?A、fopen函数用于打开文件B、fclose函数用于关闭文件C、feof函数用于检查文件是否结束D、fgets函数用于向文件写入数据参考答案:ABC判断题1.一个类可以派生出多个类,但只能继承多个基类。A、正确B、错误参考答案:A2.对象指针调用成员函数时,必须使用->运算符。A、正确B、错误参考答案:A3.一个类中只能有一个纯虚函数。A、正确B、错误参考答案:B4.重载函数在调用时是根据函数的参数个数和类型来区分的。A、正确B、错误参考答案:A5.在C++指针运算中,两个指向同一数组的指针可以进行减法运算,其结果表示两个指针在数组中下标的差值。A、正确B、错误参考答案:A6.使用new运算符动态分配的内存,必须使用delete运算符释放,且delete的参数类型必须与new的返回类型一致。A、正确B、错误参考答案:A7.C++中的const修饰符可以将一个变量定义为常量,意味着该变量的值一旦初始化,在程序的任何位置都不可能被修改。A、正确B、错误参考答案:A8.在C++中,整型常量默认为int类型,浮点型常量默认为double类型。A、正确B、错误参考答案:A9.usingnamespacestd;意味着将标准库的所有成员引入当前作用域,这样可以直接使用cout而无需前缀std::。A、正确B、错误参考答案:A10.头文件.h和.hpp在C++中通常没有严格的语法区别,但现在推荐使用.hpp或.hpph。A、正确B、错误参考答案:A11.在C++流程控制中,break语句只能用于switch语句或循环语句中,用于跳出当前代码块。A、正确B、错误参考答案:A12.在C++中,const关键字修饰的指针称为常量指针,表示指针指向的地址内容不可变。A、正确B、错误参考答案:B13.结构体变量可以直接进行赋值操作,只要两个结构体类型相同。A、正确B、错误参考答案:A14.在C++中,宏定义(#define)比const常量更好,因为它不占用内存空间。A、正确B、错误参考答案:B15.在C++中,break语句只能用于switch语句或循环语句中,不能用于if语句。A、正确B、错误参考答案:A16.局部变量和全局变量的作用域是相同的,都可以在程序的任何地方被访问。A、正确B、错误参考答案:B17.构造函数必须与类名同名,且不能有返回值。A、正确B、错误参考答案:A18.继承的方式中,public继承不会改变基类成员在派生类中的访问权限。A、正确B、错误参考答案:A19.在C++中,结构体类型和类类型在使用时,除非指定了访问权限关键字public、protected或private,否则默认的访问权限是private。A、正确B、错误参考答案:B20.在C++中,友元函数是类的成员函数,因为它在类体内进行了声明。A、正确B、错误参考答案:B21.指针数组和数组指针是同一个概念,都表示存储多个指针的数组。A、正确B、错误参考答案:B22.源文件中包含头文件时,尖括号<>表示在标准库路径中查找。A、正确B、错误参考答案:A23.C++源文件的后缀名必须为.cpp,编译器才能正确识别并进行编译。A、正确B、错误参考答案:B24.C++中的预处理命令(如#include,#define)位于源文件的顶部,通常以#号开头。A、正确B、错误参考答案:A25.重载运算符时,运算符的重载函数必须是类的成员函数。A、正确B、错误参考答案:B26.在C++中,使用exit函数可以立即终止程序的执行。A、正确B、错误参考答案:A27.在C++中,数组名通常代表该数组在内存中的首地址,因此数组名可以看作是一个常量指针。A、正确B、错误参考答案:A28.在C++中,类型转换(如(int)a)是绝对安全的,不会产生数据丢失。A、正确B、错误参考答案:B29.类模板不能定义对象,只能定义模板类。A、正确B、错误参考答案:B30.析构函数执行完毕后,对象的内存空间会被自动释放。A、正确B、错误参考答案:A31.虚函数必须是非静态成员函数。A、正确B、错误参考答案:A32.在C++中,使用break语句可以跳出switch结构,但不能跳出switch所在的循环结构。A、正确B、错误参考答案:A33.在C++中,字符串常量数组(如chars[]="Hello")是可变的。A、正确B、错误参考答案:A34.函数模板的形参类型可以指定为auto。A、正确B、错误参考答案:A35.虚函数必须被声明为const成员函数。A、正确B、错误参考答案:B36.函数的返回类型void表示函数执行完毕后不需要向调用者返回任何值。A、正确B、错误参考答案:A37.结构体和共用体的成员在内存中是共享空间的。A、正确B、错误参考答案:B38.使用迭代器遍历vector容器时,可以在遍历过程中修改容器的容量。A、正确B、错误参考答案:B39.只有非静态成员函数才能访问对象的成员变量。A、正确B、错误参考答案:B40.string类是C++标准库提供的字符串处理类。A、正确B、错误参考答案:A41.在C++类中,被private修饰的成员只能被该类自身的成员函数访问。A、正确B、错误参考答案:B42.const修饰的常量在程序运行期间其值可以改变。A、正确B、错误参考答案:B43.纯虚函数是指没有函数体的虚函数。A、正确B、错误参考答案:A44.void指针(void*)可以指向任何类型的数据,也可以直接赋值给其他类型的指针。A、正确B、错误参考答案:B45.new操作符在分配内存失败时会抛出bad_alloc异常。A、正确B、错误参考答案:A46.在函数调用中,实参和形参的个数必须相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论