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

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

智慧树知到《C-C++程序设计案例实战》章节测试答案
第一章单元测试
1、C语言程序从什么开始执行?
A.程序中的main函数
B.包含文件中的第一个函数
C.程序中的第一条可执行语句
D.程序中第一个函数
正确答案:程序中的main函数
2、C语言程序的工作过程是:编辑、编译、连接、运行。
A.正确
B.错误
正确答案:正确
3、下列正确的标识符是?
A.a2()i
B.a[i]
C.-a1
D.int i
正确答案:a2()i
4、C语言中的简单数据类型包括?
A.整形、实型
B.整形、实型、逻辑型
C.整形、实型、字符型
D.整形、字符型
正确答案:整形、实型、字符型
5、在C++程序中,表达式5%2的结果是?
A.1
B.2
C.2.5
D.3
正确答案:1
6、若int x=2,y=3,z=4; 则表达式x<;z?y:z的结果是?
A.0
B.3
C.2
D.4
正确答案:3
7、C++的程序是由什么组成的?
A.过程
B.子程序
C.函数
D.主程序和子程序
正确答案:函数
8、以数字0开头的整数是八进制整形常量。
A.正确
B.错误
正确答案:正确
9、要求运算数据必须是整形的运算符号是?
A./
B.%
C.<
D.!
正确答案:%
10、C++程序的三种基本结构是顺序、选择、循环。
A.正确
B.错误
正确答案:正确
第二章单元测试
1、结构化程序设计的三种基本结构是顺序结构、循环结构和选择结构。
A.正确
B.错误
正确答案:正确
2、switch语句和if语句不能混合使用。
A.正确
B.错误
正确答案:错误
3、switch语句中可以没有break语句。
A.正确
B.错误
正确答案:正确
4、为了避免嵌套的if-else语句的二义性,C/C++语言规定else总是与()组成配对关系。
A.同一行上的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.距离最近的if
正确答案:在其之前未配对的最近的if
5、下述程序的输出结果是:***
int main()
{
;int a=5,b=0,c=0; ;if(a=b+c)
; cout<;<;';***'; ;else
; cout<;<;';$$$'; ;return 0;}
A.正确
B.错误
正确答案:错误
6、以下程序的运行结果是s=2,t=3
#include <;iostream>;using namespace std;int main()
{
;int s=1,t=1,a=5,b=2; ;if (a>;0)
;s++; ;if (a>;b)
;t+=s; ;else if (a==b)
;t=5; ;else
;t=2*s;;cout<;<;';s=';<;<;s<;<;';,t=';<;<;t<;<;endl; ;return 0;}
A.正确
B.错误
正确答案:正确
7、以下程序的运行结果是2.
int main()
{
int k=2; switch(k)
{
;case 1:cout<;<;k++; break; ;case 2:cout<;<;k++; ;case 3:cout<;<;k++; break; ;case 4:cout<;<;k++; ;default:cout<;<;";Full!"; ;}
return 0;}
A.正确
B.错误
正确答案:错误
8、下面程序段执行结果为
char c = ';0';+2;switch {
{
;case 1:;cout<;<;';A'; break; ;case ';2';:cout<;<;';B'; ;case 2:;cout<;<;';C'; ;default:cout<;<;';D';}。
A.BC
B.BCD
C.A
D.D
正确答案:BCD
9、以下是if语句的基本形式;if(表达式)语句,其中“表达式”:
A.必须是逻辑表达式
B.必须是关系表达式
C.必须是逻辑表达式或关系表达式
D.可以是任意合法的表达式
正确答案:可以是任意合法的表达式
10、if和else语句必须同时使用。
A.正确
B.错误
正确答案:错误
第三章单元测试
1、C/C++语言中while和do-while循环的主要区别是
A.while的循环控制条件比do-while的循环控制条件严格
B.do-while的循环体不能是复合语句
C.do-while的循环体至少无条件执行一次
D.do-while允许从外部转到循环体内
正确答案:do-while的循环体至少无条件执行一次
2、以下正确的描述是
A.只能在循环体内和switch语句体内使用break语句
B.从多层循环嵌套中退出时,只能使用goto语句
C.continue语句的作用是结束整个循环的执行
D.在循环体内使用break语句或continue语句的作用相同
正确答案:只能在循环体内和switch语句体内使用break语句
3、若有以下语句
int x = 3;do {
x -= 2; cout<A.是死循环
B.输出的是1
C.输出的是3和0
D.输出的是1和-2
正确答案:输出的是1和-2
4、下面程序段的执行结果是
int a,b,c,t;a=1;b=2;c=2;while(a<;b<;c)
{
t=a; a=b; b=t; c--;}
cout<;<;a<;<;";,";<;<;b<;<;";,";<;<;c<;<;endl。
A.1,2,0
B.2,1,1
C.1,1,0
D.2,1,0
正确答案:1,2,0
5、当break语句用于do-while、for、while循环语句中时,可使程序终止循环。
A.正确
B.错误
正确答案:正确
6、break和continue语句与if语句连用时,对if语句没有影响。
A.正确
B.错误
正确答案:正确
7、以下程序段中,语句 cout<for(m=20;m>0;m--)
{ if(m % 6==0)
break; cout<A.正确
B.错误
正确答案:正确
8、以下程序段中,语句 cout<;<;m<;<;'; '; 执行的次数是2次。
for(m=20;m>;0;m--)
{ if(m % 6==0) ; ;continue; ;cout<;<;m<;<;'; ';}
A.正确
B.错误
正确答案:错误
9、若定义int i,a,k,s; 是死循环的是
A.a=1; while(a<10)
{ if(a<5) continue; a++;}
B.i=0;while (1)
{ i++; if(i==20)
break;}
C.k=0;do
{ k++; }while(k>0)
D.for (i=1;i++)
{ if(i=-10) break;
s=s+i;}
正确答案:a=1; while(a<10)
{ if(a<5) continue; a++;};k=0;do
{ k++; }while(k>0)
10、以下程序的运行结果是153.
#include
using namespace std;int main()
{ int ; n; ;long ;t=1,s=0; ;for(n=1;n<;=5;n++) ;{ t*=n;s+=t;} ;cout<;<;s; ;return 0;}
A.正确
B.错误
正确答案:正确
第四章单元测试
1、关于函数嵌套,说法正确的是?
A.函数的定义和调用均可以嵌套
B.函数的定义和调用均不可以嵌套
C.函数的定义可以嵌套,但函数的调用不可以嵌套
D.函数的定义不可以嵌套,但函数的调用可以嵌套
正确答案:函数的定义不可以嵌套,但函数的调用可以嵌套
2、关于函数参数,说法正确的是?
A.实参与其对应的形参共同占用一个内存单元
B.实参与其对应的形参各占用独立的内存单元
C.形参是虚拟的,不占用内存单元
D.只有当实参和形参同名才占用一个内存单元
正确答案:实参与其对应的形参各占用独立的内存单元
3、下面关于函数的定义和实现,正确的是?
A.int Fun(int x, int y) { return x+y; }
B.void Fun(double x, y) {; ......}
C.long Fact(int n); {; ......return; }
D.long Fact(int n) {; int n; ......return ; }
正确答案:int Fun(int x, int y) { return x+y; }
4、对函数不正确的描述是?
A.允许函数递归调用
B.当用数组名作形参时,形参数组改变可使实参数组随之改变
C.函数形参的作用范围只是局限于所定义的函数内
D.函数说明必须在主调函数之前
正确答案:函数说明必须在主调函数之前
5、在调用函数时,如果实参是简单变量,它对应形参之间的数据传递方式是?
A.地址传递
B.由实参传给形参,再由形参传回实参
C.单向值传递
D.传递方式由用户指定
正确答案:单向值传递
6、C语言中函数返回值的类型是由()决定的。
A.形参的数据类型
B.return语句中的表达式类型
C.调用该函数时的实参的数据类型
D.函数定义时指定的类型
正确答案:函数定义时指定的类型
7、在函数调用时,以下说法正确的是?
A.函数调用后必须带回返回值
B.实际参数和形式参数可以同名
C.函数间的数据传递不可以使用全局变量
D.主调函数和被调函数总是在同一个文件里
正确答案:实际参数和形式参数可以同名
8、return语句作为函数的出口,在一个函数体内只能有一个。
A.正确
B.错误
正确答案:错误
9、在函数体定义的变量为局部变量,只在该函数内有效。
A.正确
B.错误
正确答案:正确
10、声明函数原型时,可为一个或多个形参指定默认参数值,如:
int f(int x=1, int y=5, int z);。
A.正确
B.错误
正确答案:错误
第五章单元测试
1、一个数组中的所有元素可以具有不同的数据类型。
A.正确
B.错误
正确答案:错误
2、已知int a[3][4];则a[1,3]是对数组元素的正确引用。
A.正确
B.错误
正确答案:错误
3、若二维数组A有m列,则计算任一元素A[i][j]在数组中相对位置的公式为?(假设A[0][0]位于数组的第一个位置上)
A.i*m+j
B.i*m+j-1
C.j*m+i
D.i*m+j+1
正确答案:i*m+j+1
4、若定义a[][3]={1,2,3,4,5,6,7}; 则a数组中行的大小是?
A.2
B.4
C.3
D.不确定
正确答案:3
5、下面合法的数组定义是?
A.int x[]={1,2,3,4}
B.int x[][]={{2,1},{3,2}}
C.char str={“abcde”}
D.char str[4]=”abcd”
正确答案:int x[]={1,2,3,4}
6、对一维整型数组的正确定义为?
A.int a(10)
B.int n=10,a[n]
C.#define N 10;int a[N]
D.int; n;a[n]
正确答案:#define N 10;int a[N]
7、已知:int; a[10]; 则对a数组元素的正确引用是?
A.a[10]
B.a[0]
C.a[3.5]
D.a(5)
正确答案:a[0]
8、如有定义语句int a[]={2,8,3,9,4,7,5,6,6,4};,则数组a的大小是?
A.8
B.不确定
C.10
D.11
正确答案:10
9、给出以下定义:char x[ ]=";abcdefg";char y[ ]={';a';,';b';,';c';,';d';,';e';,';f';,';g';}; 则正确的叙述为?
A.数组x的长度小于数组y的长度
B.数组x的长度大于数组y的长度
C.数组x和数组y等价
D.数组x和数组y的长度相同
正确答案:数组x的长度大于数组y的长度
10、以下能对一维数组a进行初始化的语句是?
A.int a[3]={0,1,2}
B.int a{5}={10*1}
C.int a[5]=(0,1,2,3,4,)
D.int a(5)={}
正确答案:int a[3]={0,1,2}
第六章单元测试
1、有定义如下:inta[5],*p; p=a;则下列描述错误的是?
A.表达式p=p+1是合法的
B.表达式a=a+1是合法的
C.表达式a+2是合法的
D.表达式p-a是合法的
正确答案:表达式a=a+1是合法的
2、函数定义为Func(int*p),变量定义为n=100,则下面调用该函数正确的是?
A.Fun(20)
B.Fun(&n)
C.Fun(n)
D.Fun(20+n)
正确答案:Fun(&n)
3、若有说明inti, j=2, *p=&i; 则能完成i=j赋值功能的语句是?
A.i=&j
B.i=**p
C.*p=*&j
D.i=*p
正确答案:*p=*&j
4、变量的指针,其含义是指该变量的什么?
A.地址
B.一个标志
C.值
D.名
正确答案:地址
5、若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是?
A.*&p, *p, &a
B.&a, &*p, p
C.&*a, &a, *p
D.a, p, *&a
正确答案:&a, &*p, p
6、下面程序的输出结果是0。
int main()
{inta[]={1,2,3,4,5,6,7,8,9,0},*p; p=a;cout<<*p+9; return 0;}
A.正确
B.错误
正确答案:错误
7、若有定义:inta[5], *p=a; 则对a数组元素的正确引用是?
A.*(p+5)
B.*&a[5]
C.a+2
D.*(a+2)
正确答案:*(a+2)
8、若要对a进行自减运算,则a应有下面说明?
A.int b[10];int *a=b+1
B.char *a[3]
C.int p[3];int *a=p
D.int k;int *a=&k
正确答案:int b[10];int *a=b+1
9、若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9}, *p; 则数值不为3的表达式是?
A.p=x+2,*(p++)
B.p=x+3,*p++
C.x[3]
D.p=x+2,*++p
正确答案:p=x+2,*++p
10、在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。
A.正确
B.错误
正确答案:正确
第七章单元测试
1、结构体的定义不为它分配具体的内存空间。
A.正确
B.错误
正确答案:正确
2、结构体定义中,struct是关键字,不能省略,结构体名称用作结构体类型的标志,是用户自定义的标识符。
A.正确
B.错误
正确答案:正确
3、假设有如下语句,则叙述错误的是?
struct abc {
int m; float n;}mytype。
A.mytype是结构体类型名
B.mytype是结构体变量名
C.m和n都是结构体成员名
D.struct是定义结构体类型的关键字
正确答案:mytype是结构体类型名
4、若有以下说明和语句,则引用方式不正确的是?
struct worker{
int no; char *name;}work, *p=&work。
A.p->no
B.work->no
C.(*p).no
D.work.no
正确答案:work->no
5、以下结构体类型可以用来构造链表的是?
A.struct aa{int a; int *b;}
B.struct bb{int a; bb *b;}
C.struct cc{int *a; cc b;}
D.struct dd{int *a; aa b;}
正确答案:struct bb{int a; bb *b;}
6、在声明一个结构体变量时系统分配给它的存储空间是?
A.该结构体中占用最大存储空间的成员所需存储空间
B.该结构体中最后一个成员所需存储空间
C.该结构体中所有成员所需存储空间的总和
D.该结构体中第一个成员所需存储空间
正确答案:该结构体中所有成员所需存储空间的总和
7、以下关于C++结构体类型的说法正确的有?
A.结构体类型的成员可以是本类型的指针
B.结构体类型中必须包含数据和对数据的操作
C.结构体类型的内存容量是所有成员的内存容量之和
D.结构体类型中各个成员的数据类型可以不同
正确答案:结构体类型的成员可以是本类型的指针;结构体类型的内存容量是所有成员的内存容量之和;结构体类型中各个成员的数据类型可以不同
8、访问结构体成员的语句:stu.birthday.year,表示在stu结构体变量中有一个嵌套的结构体成员birthday,birthday有一个结构体成员year。
A.正确
B.错误
正确答案:正确
9、假设单链表的最后一个结点的next指针域指向了第一个结点,则该单链表是有环的。那么如果p指向某一个结点,while(p!=NULL) p=p->next; 会无限循环下去。
A.正确
B.错误
正确答案:正确
10、假设p指向链表中的第一个结点,q指向第二个结点,可以将q指向的结点删除并释放的语句是?
A.p=q->next; delete q
B.p->next=q->next; delete q
C.(*p).next=(*q).next; delete p
D.p=q; delete q
正确答案:p->next=q->next; delete q
第八章单元测试
1、对象是类的一个实例,一个类只能有一个对象。
A.正确
B.错误
正确答案:错误
2、一个类中只能有一个构造函数。
A.正确
B.错误
正确答案:错误
3、下列哪一个不是构造函数的特征。
A.构造函数可以重载
B.构造函数可以设置默认参数
C.构造函数的函数名和类名相同
D.构造函数必须指定返回值类型
正确答案:构造函数必须指定返回值类型
4、类的析构函数的作用是?
A.一般成员函数的初始化
B.类的初始化
C.删除类创建的对象
D.对象的初始化
正确答案:删除类创建的对象
5、在C++语言中,数据封装要解决的问题是?
A.便于数据转换
B.防止不同模块之间数据的非法访问
C.数据的规范化
D.避免数据丢失
正确答案:防止不同模块之间数据的非法访问
6、下列关于C++类的描述中错误的是?
A.类与类之间必须是平等的关系
B.类与类之间可以通过封装而具有明确的独立性
C.类与类之间可以通过一些手段进行通信和联络
D.类用于描述事物的属性和对事物的操作
正确答案:类与类之间必须是平等的关系
7、下列情况中,哪一种情况不会调用拷贝构造函数?
A.将类的一个对象赋值给该类的另一个对象时
B.函数的返回值是类的对象,函数执行返回调用者时
C.函数的形参是类的对象,调用函数进行形参和实参结合时
D.用派生类的对象去初始化基类对象时
正确答案:将类的一个对象赋值给该类的另一个对象时
8、下面关于类概念的描述中,错误的是?
A.类就是C语言中的结构体类型
B.类是抽象数据类型的实现
C.类是具有共同行为的若干对象的统一描述体
D.类是创建对象的样板
正确答案:类就是C语言中的结构体类型
9、类的构造函数被自动调用执行的情况是在创建该类的?
A.数据成员时
B.友元函数时
C.对象时
D.成员函数时
正确答案:对象时
10、数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是?
A.数据块
B.类
C.对象
D.函数体
正确答案:对象
第九章单元测试
1、下列描述错误的是
A.静态成员是类的成员
B.在创建对象前,静态成员不存在
C.静态成员不能是虚函数
D.静态成员函数不能直接访问非静态成员
正确答案:在创建对象前,静态成员不存在
2、下列静态数据成员特性中,错误的是
A.静态数据成员要在类体外进行初始化
B.说明静态数据成员时前边要加修饰符static
C.静态数据成员不是所有对象共有的
D.引用静态数据成员时,要在静态数据成员名前加类名和作用域符号
正确答案:静态数据成员不是所有对象共有的
3、下面关于友元的描述中,错误的是
A.友元函数可以直接访问该类的私有成员
B.友元关系不能被继承,是双向可交换的
C.利用友元可以提高程序的运行效率,但却破坏了封装性
D.一个类的友元类中的所有成员函数都是这个类的友元函数
正确答案:友元关系不能被继承,是双向可交换的
4、如果类A被说明为类B的友元,则
A.类A的成员是类B的成员
B.类B的成员函数可以访问类A的所有成员
C.类B的成员既是类A的成员
D.类A的成员函数可以访问类B的所有成员
正确答案:类A的成员函数可以访问类B的所有成员
5、下列各类函数中,不是类的成员函数的是
A.拷贝构造函数
B.构造函数
C.析构函数
D.友元函数
正确答案:友元函数
6、对静态成员的正确描述是
A.非静态成员函数也可以操作静态数据成员
B.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
C.全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域
D.静态数据成员要在类外定义和初始化
正确答案:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域
7、关于友元函数说法正确的是
A.友元函数没有this指针
B.友元函数破环了封装机制
C.友元函数需要通过对象或指针调用
D.友元函数是不能被继承的
正确答案:友元函数没有this指针;友元函数破环了封装机制;友元函数是不能被继承的
8、静态成员函数没有
A.指针参数
B.返回值
C.this指针
D.返回类型
正确答案:this指针
9、下面对静态数据成员的描述中,正确的是
A.静态数据成员不能通过类的对象调用,只能通过“类名::标识符”调用
B.静态数据成员是类的所有对象共享的数据
C.类的每个对象都有自己的静态数据成员
D.类的不同对象有不同的静态数据成员
正确答案:静态数据成员是类的所有对象共享的数据
10、友元的作用是
A.增加成员函数的种类
B.加强类的封装性
C.实现数据的隐藏性
D.提高程序的运用效率
正确答案:提高程序的运用效率
第十章单元测试
1、关于函数模板,以下描述错误的是?
A.函数模板的实例化由编译器实现
B.一个类定义中,只要有一个函数模板,则这个类是模板类
C.函数模板必须由程序员实例化为可执行的模板函数
D.类模板的成员函数都是函数模板,类模板实例化后,成员函数随之实例化
正确答案:函数模板必须由程序员实例化为可执行的模板函数
2、下列类模板说明中,正确的是?
A.template
B.template(class T1, class T2)
C.template
D.template
正确答案:template
3、函数模板定义如下,下列选项正确的是?
template
Max(T a, T b, T &c)
{ c=a+b; }
A.float x; double y, z;Max(x,y,z)
B.int x, y; char z;Max(x,y,z)
C.int x, y; float z;Max(x,y,z)
D.double x, y, z;Max(x,y,z)
正确答案:double x, y, z;Max(x,y,z)
4、下列有关类模板的描述错误的是?
A.类模板和模板类是同一个概念。
B.使用时,模板参数与函数参数相同,是按位置而不是按名称对应的。
C.模板把数据类型作为一个设计参数,称为参数化程序设计。
D.模板参数表中可以有类型参数和非类型参数。
正确答案:类模板和模板类是同一个概念。
5、类模板的使用实际上是将类模板实例化为一个什么?
A.抽象类
B.类
C.对象
D.函数
正确答案:类
6、类模板的实例化在什么时候进行?
A.在连接时进行
B.在编译时进行
C.属于动态联编
D.在运行时进行
正确答案:在编译时进行
7、类模板的模板参数?
A.三种均可
B.只可作为成员函数的参数类型
C.只能作为数据成员的类型
D.只可作为成员函数的返回类型
正确答案:三种均可
8、下列关于函数重载的叙述错误的是?
A.函数返回值的类型不能用于对重载函数的区分
B.const关键字可以用于对重载函数的区分
C.函数重载就是用相同的函数名定义多个函数
D.重载函数的参数列表必须不同
正确答案:函数重载就是用相同的函数名定义多个函数
9、下列关于模板形参的描述中错误的是?
A.可以用class修饰模板形参
B.模板形参表必须在关键字template之后
C.模板形参表必须用括号()括起来
D.可以用typename修饰模板形参
正确答案:模板形参表必须用括号()括起来
10、说明函数模板的关键字是?
A.virtual
B.static
C.template
D.inline
正确答案:template
第十一章单元测试
1、在表达式x+y*2中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符,则operator+和operator*分别有多少个参数?
A.1 1
B.2 1
C.1 2
D.2 2
正确答案:1 2
2、以下关于运算符重载的叙述中,正确的是?
A.重载二元运算符时,必须声明两个形参
B.若重载运算符‘+’,则相应的运算符函数名为:+
C.通过运算符重载,可以定义新的运算符
D.有的运算,其运算符只能作为友元函数重载
正确答案:有的运算,其运算符只能作为友元函数重载
3、运算符重载函数必须是类的成员函数。
A.正确
B.错误
正确答案:错误
4、关于运算符重载的描述中正确的是?
A.运算符重载可以改变操作数的个数
B.运算符重载不可以改变语法结构
C.运算符重载可以改变优先级
D.运算符重载可以改变结合性
正确答案:运算符重载不可以改变语法结构
5、友元运算符obj1>obj2被C++编译器解释为?
A.obj1.operator(obj2)
B.operator>(obj1,obj2)
C.>(obj1,obj2)
D.obj2.operator>(obj1)
正确答案:>(obj1,obj2)
6、下列运算符哪一个不能在C++中被重载?
A.?:
B.+
C.new
D.&&
正确答案:?:
7、现在需要对list类对象使用的逻辑运算符==重载,以下函数声明正确的是?
A.bool list::operator==(const list &a)
B.bool &list::operator==(const list &a)
C.list &list::operator==(const list &a)
D.list list::operator==(const list &a)
正确答案:bool list::operator==(const list &a)
8、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是?
A.作为友元函数重载的二元运算符
B.作为成员函数重载的一元运算符
C.作为成员函数重载的二元运算符
D.作为友元函数重载的一元运算符
正确答案:作为友元函数重载的一元运算符
9、运算符重载时以下性质一定会保持的是?
A.操作数类型、优先级
B.返回值类型、操作数类型
C.返回值类型、结合性
D.优先级、操作数个数
正确答案:优先级、操作数个数
10、若为类MyClass重载运算符+,下列声明中错误的是?
A.friend MyClass operator+(MyClass, MyClass)
B.friend MyClass operator+(MyClass, double)
C.friend MyClass operator+(double, MyClass)
D.friend MyClass operator+(double, double)
正确答案:friend MyClass operator+(double, double)
第十二章单元测试
1、类继承中,默认的继承方式是?
A.公有
B.保护
C.私有
D.寄存
正确答案:私有
2、类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的。
A.正确
B.错误
正确答案:正确
3、继承方式关键字为private时,基类的公共成员在派生类中是私有成员。
A.正确
B.错误
正确答案:正确
4、继承具有(),即当基类本身也是某一类的派生类时,底层的派生类也会自动继承间接基类的成员。
A.传递性
B.重复性
C.多样性
D.规律性
正确答案:传递性
5、C++中类有两种用法,一种是类的实例化,即生成类对象,另一种是通过()派生出新的类。
A.重载
B.复用
C.封装
D.继承
正确答案:继承
6、下面哪一项的叙述不符合赋值兼容规则?
A.派生类的对象可以初始化基类的引用
B.派生类的对象可以赋值给基类的对象
C.基类的对象可以赋值给派生类的对象
D.派生类的对象的地址可以赋值给指向基类的指针
正确答案:基类的对象可以赋值给派生类的对象
7、派生类的对象对它的基类成员中()是可以访问的。
A.公有继承的私有成员
B.公有继承的保护成员
C.公有继承的公有成员
D.私有继承的公有成员
正确答案:公有继承的保护成员;公有继承的公有成员
8、C++中,不能被派生类继承的有?
A.静态成员函数
B.构造函数
C.虚函数
D.赋值操作函数
正确答案:赋值操作函数
9、以下关于派生机制的描述中,不正确的是?
A.派生类不仅可以继承基类的成员,也可以添加自己的成员
B.采用私有继承,派生类只能得到基类的公有成员
C.采用不同的继承方式,将限制派生类对基类成员的使用
D.设置protected成员是为派生类访问基类成员之用
正确答案:采用私有继承,派生类只能得到基类的公有成员
10、下列对基类和派生类关系的描述中,错误的是?
A.派生类是基类的子集
B.派生类是基类定义的延续
C.派生类和基类之间具有层次关系
D.派生类是基类的具体化
正确答案:派生类是基类的具体化
第十三章单元测试
1、以下选项中不是面向对象程序设计所具有的特性的是?
A.模板
B.多态性
C.数据封装
D.继承
正确答案:模板
2、实现运行时的多态性采用?
A.重载函数
B.虚函数
C.析构函数
D.构造函数
正确答案:虚函数
3、下列关于虚函数的描述中,正确的是?
A.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
B.虚函数是一个非成员函数
C.虚函数是一个static类型的成员函数
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
正确答案:基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
4、在C++中要实现动态联编,必须使用什么调用虚函数?
A.基类指针
B.派生类指针
C.对象名
D.类名
正确答案:对象名
5、下列函数中不能说明为虚函数的是?
A.私有成员函数
B.公有成员函数
C.构造函数
D.析构函数
正确答案:构造函数
6、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中?
A.只有被重新说明为virtual时才是虚函数
B.只有被重新说明时才是虚函数
C.都不是虚函数
D.都是虚函数
正确答案:都是虚函数
7、以下哪一个是在一个基类中说明的虚函数,它在该类中没有定义,但要求任何派生类都必须定义自己的版本。
A.虚析构函数
B.虚构造函数
C.静态成员函数
D.纯虚函数
正确答案:纯虚函数
8、类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->;A::func(),将?
A.调用类A中的函数func()
B.调用类B中的函数func()
C.根据p所指的对象类型而确定调用类A中或类B中的函数func()
D.既调用类A中的函数,也调用类B中的函数
正确答案:调用类A中的函数func()
9、以下基类中的成员函数哪个表示纯虚函数?
A.void Fun()=0
B.virtual void Fun(int){ }
C.virtual void Fun(int)
D.virtual void Fun()=0
正确答案:virtual void Fun()=0
10、继承方式关键字为private时,基类的公共成员在派生类中是私有成员。
A.正确
B.错误
正确答案:正确
第十四章单元测试
1、语句ofstream f("salary.dat", ios::app | ios::binary); 的功能是建立流对象f,试图打开文件salary.dat并与之连接,并且?
A.若文件存在,打开失败;若文件不存在,建立一个新文件
B.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件
C.若文件存在,将其置为空文件;若文件不存在,打开失败
D.若文件存在,将文件写指针定位于文件末尾;若文件不存在,建立一个新文件
正确答案:若文件存在,将文件写指针定位于文件末尾;若文件不存在,建立一个新文件
2、当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为?
A.ios::in | ios::out
B.都不对
C.ios::in
D.ios::out
正确答案:ios::out
3、对于语句cout<A.x是一个变量
B.endl的作用是输出回车换行
C.cout是一个输出流对象
D.<<称为提取运算符
正确答案:<<称为提取运算符
4、可以用ifstream定义一个输出流对象。
A.正确
B.错误
正确答案:错误
5、执行语句序列char str[80]; cin.getline(str,80); 时,若键入happy new year 则str中的字符串是happy
A.正确
B.错误
正确答案:错误
6、cerr是标准错误输出流,没有缓冲,发送给它的内容立即被输出。
A.正确
B.错误
正确答案:正确
7、下列类中哪一个不是输入输出流类iostream的派生类。
A.fstream
B.ostrstream
C.ofstream
D.strstream
正确答案:ofstream
8、read函数的功能是从输入流中读取?
A.一个字符
B.当前字符
C.指定若干个字节
D.一行字符
正确答案:指定若干个字节
9、包含类fstream定义的头文件是?
A.ifstream.h
B.iostream.h
C.ofstream.h
D.fstream.h
正确答案:iostream.h
10、要求可打开文件:D:\file.dat 写入数据,错误的语句是?
A.ifstream infile("D:\\file.dat", ios::in)
B.ofstream infile("D:\\file.dat", ios::out)
C.fstream infile("D:\\file.dat", ios::in)
D.fstream infile("D:\\file.dat", ios::in | ios::out)
正确答案:ofstream infile("D:\\file.dat", ios::out)