第一章 单元测试
1、单选题:
C语言程序从什么开始执行?
选项:
A:程序中的第一条可执行语句
B:程序中的main函数
C:程序中第一个函数
D:包含文件中的第一个函数
答案: 【程序中的main函数】
2、判断题:
C语言程序的工作过程是:编辑、编译、连接、运行。
选项:
A:对
B:错
答案: 【对】
3、单选题:
下列正确的标识符是?
选项:
A:int i
B:a[i]
C:a2_i
D:-a1
答案: 【a2_i】
4、单选题:
C语言中的简单数据类型包括?
选项:
A:整形、实型、逻辑型
B:整形、字符型
C:整形、实型、字符型
D:整形、实型
答案: 【整形、实型、字符型】
5、单选题:
在C++程序中,表达式5%2的结果是?
选项:
A:3
B:2
C:1
D:2.5
答案: 【1】
6、单选题:
若int x=2,y=3,z=4; 则表达式x<z?y:z的结果是?
选项:
A:3
B:0
C:4
D:2
答案: 【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:BCD
B:A
C:BC
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的循环体至少无条件执行一次
答案: 【
2、单选题:
以下正确的描述是
选项:
A:continue语句的作用是结束整个循环的执行
B:在循环体内使用break语句或continue语句的作用相同
C:从多层循环嵌套中退出时,只能使用goto语句
D:只能在循环体内和switch语句体内使用break语句
答案: 【
3、单选题:
若有以下语句int x = 3;do { x -= 2; cout} while (!(–x));
选项:
A:是死循环
B:输出的是3和0
C:输出的是1
D:输出的是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,1,0
B:2,1,1
C:1,2,0
D:2,1,0
答案: 【
5、判断题:
当break语句用于do-while、for、while循环语句中时,可使程序终止循环。
选项:
A:对
B:错
答案: 【】
6、判断题:
break和continue语句与if语句连用时,对if语句没有影响。
选项:
A:错
B:对
答案: 【】
7、判断题:
以下程序段中,语句 coutfor(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{ if(a a++;}
B:for (i=1;;i++){ if(i=-10) break; s=s+i;}
C:i=0;while (1){ i++; if(i==20) break;}
D:k=0;do{ k++; }while(k>0);
答案: 【】
10、判断题:
以下程序的运行结果是153.#includeusing 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:void Fun(double x, y) { …… }
B:int Fun(int x, int y) { return x+y; }
C:long Fact(int n) { int n; …… return ; }
D:long Fact(int n); { …… return; }
答案: 【
4、单选题:
对函数不正确的描述是?
选项:
A:当用数组名作形参时,形参数组改变可使实参数组随之改变
B:允许函数递归调用
C:函数说明必须在主调函数之前
D:函数形参的作用范围只是局限于所定义的函数内
答案:
5、单选题:
在调用函数时,如果实参是简单变量,它对应形参之间的数据传递方式是?
选项:
A:传递方式由用户指定
B:单向值传递
C:地址传递
D:由实参传给形参,再由形参传回实参
答案: 【
6、单选题:
C语言中函数返回值的类型是由()决定的。
选项:
A:调用该函数时的实参的数据类型
B:形参的数据类型
C:函数定义时指定的类型
D:return语句中的表达式类型
答案: 【
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+1
B:j*m+i
C:i*m+j
D:i*m+j-1
答案: 【
4、单选题:
若定义a[][3]={1,2,3,4,5,6,7}; 则a数组中行的大小是?
选项:
A:2
B:不确定
C:4
D:3
答案: 【】
5、单选题:
下面合法的数组定义是?
选项:
A:int x[]={1,2,3,4};
B:char str={“abcde”};
C:char str[4]=”abcd”;
D:int x[][]={{2,1},{3,2}};
答案: 【
6、单选题:
对一维整型数组的正确定义为?
选项:
A:int n=10,a[n];
B:#define N 10 int a[N];
C:int n;a[n];
D:int a(10);
答案: 【
7、单选题:
已知:int a[10]; 则对a数组元素的正确引用是?
选项:
A:a[0]
B:a[10]
C:a[3.5]
D:a(5)
答案: 【
8、单选题:
如有定义语句int a[]={2,8,3,9,4,7,5,6,6,4};,则数组a的大小是?
选项:
A:8
B:不确定
C:10
D:11
答案: 【】
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的长度
答案: 【
10、单选题:
以下能对一维数组a进行初始化的语句是?
选项:
A:int a[5]=(0,1,2,3,4,);
B:int a{5}={10*1};
C:int a(5)=;
D:int a[3]={0,1,2};
答案: 【】
第六章 单元测试
1、单选题:
有定义如下:int a[5], *p; p=a; 则下列描述错误的是?
选项:
A:表达式a+2是合法的
B:表达式p-a是合法的
C:表达式a=a+1是合法的
D:表达式p=p+1是合法的
答案: 【
2、单选题:
函数定义为Func(int *p),变量定义为n=100,则下面调用该函数正确的是?
选项:
A:Fun(n)
B:Fun(&n)
C:Fun(20)
D:Fun(20+n)
答案: 【
3、单选题:
若有说明int i, j=2, *p=&i; 则能完成i=j赋值功能的语句是?
选项:
A:i=**p;
B:*p=*&j;
C:i=*p;
D:i=&j;
答案: 【
4、单选题:
变量的指针,其含义是指该变量的什么?
选项:
A:一个标志
B:值
C:名
D:地址
答案: 【
5、单选题:
若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是?
选项:
A:a, p, *&a
B:&a, &*p, p
C:&*a, &a, *p
D:*&p, *p, &a
答案: 【
6、判断题:
下面程序的输出结果是0。int main() { int a[]={1,2,3,4,5,6,7,8,9,0}, *p; p=a; cout return 0;}
选项:
A:对
B:错
答案: 【】
7、单选题:
若有定义:int a[5], *p=a; 则对a数组元素的正确引用是?
选项:
A:*&a[5]
B:a+2
C:*(a+2)
D:*(p+5)
答案: 【
8、单选题:
若要对a进行自减运算,则a应有下面说明?
选项:
A:int p[3]; int *a=p;
B:char *a[3];
C:int b[10];int *a=b+1;
D:int k;int *a=&k;
答案: 【
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++);
答案: 【
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是定义结构体类型的关键字
答案: 【
4、单选题:
若有以下说明和语句,则引用方式不正确的是?struct worker{ int no; char *name;}work, *p=&work;
选项:
A:work->no
B:p->no
C:(*p).no
D:work.no
答案: 【
5、单选题:
以下结构体类型可以用来构造链表的是?
选项:
A:struct dd{int *a; aa b;};
B:struct cc{int *a; cc b;} ;
C:struct aa{int a; int *b;};
D: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;
答案:
第八章 单元测试
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:类是创建对象的样板
B:类是抽象数据类型的实现
C:类是具有共同行为的若干对象的统一描述体
D:类就是C语言中的结构体类型
答案: 【
9、单选题:
类的构造函数被自动调用执行的情况是在创建该类的?
选项:
A:数据成员时
B:友元函数时
C:成员函数时
D:对象时
答案: 【
10、单选题:
数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是?
选项:
A:函数体
B:数据块
C:对象
D:类
答案: 【
第九章 单元测试
1、单选题:
下列描述错误的是
选项:
A:静态成员函数不能直接访问非静态成员
B:静态成员不能是虚函数
C:静态成员是类的成员
D:在创建对象前,静态成员不存在
答案: 【
2、单选题:
下列静态数据成员特性中,错误的是
选项:
A:说明静态数据成员时前边要加修饰符static
B:静态数据成员不是所有对象共有的
C:静态数据成员要在类体外进行初始化
D:引用静态数据成员时,要在静态数据成员名前加类名和作用域符号
答案:
3、单选题:
下面关于友元的描述中,错误的是
选项:
A:友元函数可以直接访问该类的私有成员
B:友元关系不能被继承,是双向可交换的
C:利用友元可以提高程序的运行效率,但却破坏了封装性
D:一个类的友元类中的所有成员函数都是这个类的友元函数
答案: 【
4、单选题:
如果类A被说明为类B的友元,则
选项:
A:类A的成员是类B的成员
B:类A的成员函数可以访问类B的所有成员
C:类B的成员既是类A的成员
D:类B的成员函数可以访问类A的所有成员
答案: 【
5、单选题:
下列各类函数中,不是类的成员函数的是
选项:
A:构造函数
B:友元函数
C:拷贝构造函数
D:析构函数
答案: 【
6、单选题:
对静态成员的正确描述是
选项:
A:静态数据成员要在类外定义和初始化
B:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域
C:非静态成员函数也可以操作静态数据成员
D:调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
答案: 【
7、多选题:
关于友元函数说法正确的是
选项:
A:友元函数破环了封装机制
B:友元函数需要通过对象或指针调用
C:友元函数没有this指针
D:友元函数是不能被继承的
答案: 【
8、单选题:
静态成员函数没有
选项:
A:this指针
B:指针参数
C:返回类型
D:返回值
答案: 【
9、单选题:
下面对静态数据成员的描述中,正确的是
选项:
A:静态数据成员是类的所有对象共享的数据
B:类的不同对象有不同的静态数据成员
C:类的每个对象都有自己的静态数据成员
D:静态数据成员不能通过类的对象调用,只能通过“类名::标识符”调用
答案: 【
10、单选题:
友元的作用是
选项:
A:增加成员函数的种类
B:加强类的封装性
C:实现数据的隐藏性
D:提高程序的运用效率
答案: 【
第十章 单元测试
1、单选题:
关于函数模板,以下描述错误的是?
选项:
A:一个类定义中,只要有一个函数模板,则这个类是模板类
B:函数模板必须由程序员实例化为可执行的模板函数
C:类模板的成员函数都是函数模板,类模板实例化后,成员函数随之实例化
D:函数模板的实例化由编译器实现
答案: 【
2、单选题:
下列类模板说明中,正确的是?
选项:
A:template
B:template
C:template
D:template(class T1, class T2)
答案: 【
3、单选题:
函数模板定义如下,下列选项正确的是?template Max(T a, T b, T &c){ c=a+b; }
选项:
A:int x, y; float z;Max(x,y,z);
B:float x; double y, z;Max(x,y,z);
C:double x, y, z;Max(x,y,z);
D:int x, y; char 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:const关键字可以用于对重载函数的区分
B:函数返回值的类型不能用于对重载函数的区分
C:重载函数的参数列表必须不同
D:函数重载就是用相同的函数名定义多个函数
答案: 【
9、单选题:
下列关于模板形参的描述中错误的是?
选项:
A:可以用class修饰模板形参
B:模板形参表必须用括号()括起来
C:模板形参表必须在关键字template之后
D:可以用typename修饰模板形参
答案:
10、单选题:
说明函数模板的关键字是?
选项:
A:template
B:inline
C:virtual
D:static
答案: 【
第十一章 单元测试
1、单选题:
在表达式x+y*2中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符,则operator+和operator*分别有多少个参数?
选项:
A:1 2
B:2 1
C:2 2
D:1 1
答案:
2、单选题:
以下关于运算符重载的叙述中,正确的是?
选项:
A:通过运算符重载,可以定义新的运算符
B:重载二元运算符时,必须声明两个形参
C:有的运算,其运算符只能作为友元函数重载
D:若重载运算符‘+’,则相应的运算符函数名为:+
答案:
3、判断题:
运算符重载函数必须是类的成员函数。
选项:
A:错
B:对
答案: 【】
4、单选题:
关于运算符重载的描述中正确的是?
选项:
A:运算符重载不可以改变语法结构
B:运算符重载可以改变操作数的个数
C:运算符重载可以改变优先级
D:运算符重载可以改变结合性
答案: 【
5、单选题:
友元运算符obj1>obj2被C++编译器解释为?
选项:
A:obj2.operator>(obj1)
B:>(obj1,obj2)
C:obj1.operator(obj2)
D:operator>(obj1,obj2)
答案: 【
6、单选题:
下列运算符哪一个不能在C++中被重载?
选项:
A:+
B:?:
C:&&
D:new
答案: 【】
7、单选题:
现在需要对list类对象使用的逻辑运算符==重载,以下函数声明正确的是?
选项:
A:list &list::operator==(const list &a);
B:bool &list::operator==(const list &a);
C:list list::operator==(const list &a);
D:bool list::operator==(const list &a);
答案: 【
8、单选题:
在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是?
选项:
A:作为成员函数重载的一元运算符
B:作为友元函数重载的二元运算符
C:作为友元函数重载的一元运算符
D:作为成员函数重载的二元运算符
答案: 【
9、单选题:
运算符重载时以下性质一定会保持的是?
选项:
A:返回值类型、操作数类型
B:返回值类型、结合性
C:优先级、操作数个数
D:操作数类型、优先级
答案: 【
10、单选题:
若为类MyClass重载运算符+,下列声明中错误的是?
选项:
A:friend MyClass operator+(MyClass, double);
B:friend MyClass operator+(MyClass, MyClass);
C:friend MyClass operator+(double, double);
D:friend MyClass operator+(double, MyClass);
答案: 【
第十二章 单元测试
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:虚函数是一个非成员函数
B:虚函数是一个static类型的成员函数
C:基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D:派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
答案: 【
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:调用类B中的函数func()
B:既调用类A中的函数,也调用类B中的函数
C:根据p所指的对象类型而确定调用类A中或类B中的函数func()
D:调用类A中的函数func()
答案: 【
9、单选题:
以下基类中的成员函数哪个表示纯虚函数?
选项:
A:void Fun()=0;
B:virtual void Fun(int){ }
C:virtual void Fun(int);
D: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
B:都不对
C:ios::in | ios::out
D:ios::out
答案:
3、单选题:
对于语句cout
选项:
A:
B:endl的作用是输出回车换行
C:x是一个变量
D:cout是一个输出流对象
答案: 【】
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:strstream
B:ostrstream
C:fstream
D:ofstream
答案: 【
8、单选题:
read函数的功能是从输入流中读取?
选项:
A:一行字符
B:指定若干个字节
C:当前字符
D:一个字符
答案: 【
9、单选题:
包含类fstream定义的头文件是?
选项:
A:fstream.h
B:iostream.h
C:ofstream.h
D:ifstream.h
答案: 【
10、单选题:
要求可打开文件:D:file.dat 写入数据,错误的语句是?
选项:
A:fstream infile(“D:file.dat”, ios::in | ios::out);
B:ifstream infile(“D:file.dat”, ios::in);
C:fstream infile(“D:file.dat”, ios::in);
D:ofstream infile(“D:file.dat”, ios::out);
答案: 【