首页 › 答案 › 题库 › 知到智慧树 › 未分类

智慧树知到《C++程序设计》章节测试答案

智慧树知到《C++程序设计》章节测试答案
第一章单元测试
1、#include语句()
A.总是在程序运行时最先执行
B.按照在程序中的位置顺序执行
C.在程序编译前需要用包含的文件替换,将源文件进行扩展
D.在最后执行;
正确答案:在程序编译前需要用包含的文件替换,将源文件进行扩展
2、以下说法正确的是:
A.用C++语言书写程序时,每行必须有行号
B.用C++语言书写程序时,一行只能写一个语句
C.用C++语言书写程序时要注意区分大小写
D.用C++语言书写程序时,一个语句可分几行写
正确答案:用C++语言书写程序时要注意区分大小写
3、以下哪种说法不是C++语言的属性:
A.C++语言是泛型程序设计语言
B.C++语言是面向对象的程序设计语言
C.C++语言是非过程的程序设计语言
D.C++语言是面向过程的程序设计语言
正确答案:C++语言是非过程的程序设计语言
4、C++中,一般使用流对象来输入输出对象,通过以下哪个流对象可以输入一个整数:
A.cin
B.string
C.cout
D.cerr
正确答案:cin
5、面向过程的C++的程序结构与C语言一样,是:
A.对象+方法
B.由函数构成
C.由类构成
D.数据结构+算法
正确答案:由函数构成;数据结构+算法
第二章单元测试
1、下列哪个是C++语言的有效标识符:
A.()No1
B.12345
C.No.1
D.int
正确答案:()No1
2、考虑函数原型void test(int a,int; b=7,char=";*";),下面的函数调用中,属于不合法调用的是:
A.test(5)
B.test(5,8)
C.test(6,";#";)
D.test(0,0,";*";)
正确答案:test(6,";#";)
3、下列语句中错误的是:
A.int *pointer = new int(10)
B.int *pointer = new int[10]
C.int *pointer = new int[40](0)
D.int *pointer = new int
正确答案:int *pointer = new int[40](0)
4、对引用与指针的区别以下说法错误的是:
A.引用和指针都可以不被初始化。
B.引用必须被初始化,指针不必。
C.引用初始化以后不能被改变,指针可以改变所指的对象。
D.不存在指向空值的引用,但是存在指向空值的指针。
正确答案:引用和指针都可以不被初始化。
5、已知有数组定义char a[3][4];下列表达式中错误的是:
A.a[0][1]=a[0][1]
B.a[2][3]=';W'
C.strcpy(a[2],";WIN";)
D.a[2]=";WIN";
正确答案:a[2]=";WIN"
第三章单元测试
1、C++中,若一个变量的定义不在任何函数内部,则它所占的内存在内存的哪个区分配:
A.堆区
B.栈区
C.代码区
D.静态数据区
正确答案:静态数据区
2、若有语句,int p=new int; 则p所占的内存在内存的哪个区分配:
A.代码区
B.静态数据区
C.堆区
D.栈区
正确答案:堆区
3、若有定义int fac(int n) {; static int t=1; t=t*n; return t; }则变量t是:
A.全局变量
B.局部变量
C.自动变量
D.静态局部变理
正确答案:静态局部变理
4、在函数中声明的静态变量:
A.在函数体中可见,函数结束调用时释放的变量
B.在函数体中可见,项目结束调用时释放
C.在程序执行时生成,块结束时释放
D.在项目中可见,项目结束调用时释放
正确答案:在函数体中可见,项目结束调用时释放
5、某文件中定义的静态全局变量(或称静态外部变量)的作用域是()。
A.本文件
B.跨文件
C.只限某个函数
D.不限
正确答案:本文件
第四章单元测试
1、设计一个类Shape,含有一个数据成员color,若希望能被它的子类成员函数访问,它的访问属性应该设计为:
A.protected
B.private
C.public
正确答案:protected
2、定义一个类,要使用关键字:
A.class
B.union
C.struct
D.enum
正确答案:class
3、有以下定义:class point{; int m,n;public:void set(int x,int y){this->;m=x;this->;n=y;}}; Point *pointer;则以下哪种使用是正确的:
A.p.set(1,2)
B.cout<;<;pointer->;n
C.pointer->;m=3
D.p->;set(1,2)
正确答案:p->;set(1,2)
4、关于对象概念的描述中,说法错误的是:
A.对象就是C语言中的结构体类型变量
B.对象之间的信息传递是通过消息进行的
C.对象代表着正在创建的系统中的一个实体
D.对象是类类型的一个变量
正确答案:对象就是C语言中的结构体类型变量
5、下列关于类定义的说法中,正确的是:
A.成员函数只能在类体外进行定义
B.数据成员必须被声明为私有的
C.类定义由两部分构成,数据成员和函数成员
D.类成员的缺省访问权限是保护的
正确答案:类定义由两部分构成,数据成员和函数成员
第五章单元测试
1、将运算符重载为类成员函数时,其参数表中含有一个参数,说明该运算是:
A.不合法的运算符
B.无操作数的运算符
C.一元运算符
D.可能是二元运算符
正确答案:可能是二元运算符
2、运算符重载,本质上是运算符函数的重载,运算符函数是一种特殊的()或友元函数。
A.析构函数
B.构造函数
C.重载函数
D.成员函数
正确答案:成员函数
3、以下对运算符函数重载规则的描述中,()是正确的。
A.可以改变运算符原来的结合性
B.不能改变原运算符的语义
C.可以改变参与运算的操作数个数
D.可以改变运算符原来的优先级
正确答案:不能改变原运算符的语义
4、如果类Point要重载插入运算符<;<;,那么重载函数参数表的一般形式为:
A.(const Point&;)
B.(const Point&;,ostream &;)
C.(ostream&;)
D.(ostream&;,const &;Point)
正确答案:(ostream&;,const &;Point)
5、类型转换函数只能定义为一个类的:
A.成员函数
B.析构函数
C.友元函数
D.构造函数
正确答案:成员函数
第六章单元测试
1、下列有关继承和派生的叙述中,错误的是:
A.派生类应当向基类的构造函数传递参数
B.作为虚基类的类不能被实例化
C.派生类不能访问基类的保护成员
D.虚函数不一定要在派生类中重新实现
正确答案:派生类不能访问基类的保护成员
2、销毁一个含有对象成员的派生类对象时,各析造函数体的执行次序为:
A.基类、成员对象类、派生类
B.基类、派生类、成员对象类
C.派生类、成员对象类、基类
D.成员对象类、基类、派生类
正确答案:派生类、成员对象类、基类
3、下列代码声明了3个类class Animal{};class Cat:publicAnimal{};class Mouse:Animal{};下列关于这些类之间关系的描述中,错误的是:
A.类Cat是类Animal的派生类
B.类Animal是类Cat的基类
C.类Mouse是类Animal的派生类
D.类Mouse从类Cat公有继承
正确答案:类Mouse从类Cat公有继承
4、下列代码声明了3个类class Animal{};class Cat:publicAnimal{};class Mouse:Animal{};对于这段代码,理解错误的是:
A.类Cat是从类Animal公有继承
B.类Mouse和类Cat有共同的基类
C.类Cat和类Mouse对类Animal的成员的访问属性一样
D.类Mouse是类Animal的私有继承
正确答案:类Cat和类Mouse对类Animal的成员的访问属性一样
5、在C++中用来实现运行时多态性的是:
A.构造函数
B.重载函数
C.虚函数
D.析构函数
正确答案:虚函数
第七章单元测试
1、C++中使用类模板的理由中,以下说法错误的是:
A.它是类型无关的,因此具有很高的可复用性。
B.它在编译时而不是运行时检查数据类型,保证了类型安全。
C.类模板需要实例化后才能定义对象。
D.类模板不属于C++的多态内容。
正确答案:类模板不属于C++的多态内容。
2、关于类模板,下列表述中错误的是:
A.类模板的成员函数都是函数模板
B.用类模板定义一个对象时,有可能省略实参表
C.类模板只能有虚拟类型参数
D.类模板在编译时会被使用实参表实例化为模板类
正确答案:类模板只能有虚拟类型参数
3、下列关于模板形参的描述中,错误的是:
A.模板形参表必须用括弧()括起来
B.模板形参表必须在关键字template之后
C.可以用typename修饰模板形参
D.可以用class修饰模板形参
正确答案:模板形参表必须用括弧()括起来
4、关于函数模板,描述错误的是:
A.函数模板的实例化由编译器实现
B.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
C.函数模板在函数调用时会自动实例化为可支持的模板函数
D.一个类定义中,只要有一个函数模板,这个类就是类模板
正确答案:一个类定义中,只要有一个函数模板,这个类就是类模板
5、在下列模板的类属参数的说明中,正确的是:
A.template<;typename T1,template T2>
B.template<;class T1,T2>
C.template(typedef T1,typedef T2)
D.template<;typename T1,T2>;
正确答案:template<;typename T1,template T2>
第八章单元测试
1、以下支持使用下标操作符来获取元素值的容器是:
A.集合
B.向量
C.映射
D.列表
正确答案:向量
2、以下关于迭代器的说法正确的是:
A.5种类型的迭代器(输入迭代器、输出迭代器、前向迭代器、随机访问迭代器)都支持++操作
B.5种类型的迭代器(输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机记问迭代器)都支持==操作
C.为映射map定义的迭代器支持随机访问
D.指针和迭代器完全等价
正确答案:5种类型的迭代器(输入迭代器、输出迭代器、前向迭代器、随机访问迭代器)都支持++操作
3、以下代码的输出结果是为:#include<;iostream>;#include<;vector>;#include<;algoritm>;using namespace std;;void push(vector<;int>;&; v){; int i = 4;; for(i>;0; i--); v.push()back(i);};void sort(vector<;int>; v){; sort(v.begin(),v.end());};void disp(vector<;int>; v){; for (int i=0; i<;v.size(); i++); cout<;<; v[i];};int main(){; vector<;int>; y;; push(v); disp(v);; sort(v); disp(v);; return 0;}
A.43214321
B.12344321
C.12341234
D.43211234
正确答案:43214321
4、下列哪个容器中的元素是有序的:
A.dequeue
B.set
C.list
D.vector
正确答案:set
5、以下函数模板中,能够对数据进行排序操作的是:
A.binary()search
B.sort
C.for()each
D.find
正确答案:sort