D:default
答案: 【default】
3、问题:下列定义对象的描述中,错误的是( )
选项:
A:定义对象时系统会自动进行初始化
B:对象成员的表示与C语言中结构变量的成员表示相同
C:属于同一类的对象占有内存字节数相同
D:一个类所能创建对象的个数是有限制的
答案: 【一个类所能创建对象的个数是有限制的】
4、问题:下列关于成员函数的描述中,错误的是( )
选项:
A:成员函数的定义必须在类体外
B:成员函数可以是公有的,也可以是私有的
C:成员函数在类体外定义时,前加inline可为内联函数
D:成员函数可以设置参数的默认值
答案: 【成员函数的定义必须在类体外 】
5、问题:使用class定义的类,其默认的访问权限是公有的,使用struct定义的类,其默认的访问权限是私有的。
选项:
A:对
B:错
答案: 【错】
6、问题:下列关于基类和派生类的描述中,错误的是( )
选项:
A:一个基类可以生成多个派生类
B:基类中所有成员都是它的派生类的成员
C:基类中成员访问权限继承到派生类中不变
D:派生类中除了继承的基类成员还有自己的成员
答案: 【基类中成员访问权限继承到派生类中不变 】
7、问题:下列关于继承的描述中,错误的是( )
选项:
A:继承是重用性的重要机制
B:C++语言只支持单重继承,不支持多重继承
C:继承关系不是可逆的
D:继承是面向对象程序设计语言的重要特性
答案: 【C++语言只支持单重继承,不支持多重继承】
8、问题:下列成员函数中,纯虚函数是( )
选项:
A:virtual void f1()=0
B:void f1()=0;
C:virtual void f1(){}
D:virtual void f1()==0
答案: 【virtual void f1()=0】
9、问题:派生类只继承基类中的公有成员和保护成员,而不继承私有成员。
选项:
A:对
B:错
答案: 【错】
10、问题:单重继承是指派生类只有一个基类的情况。
选项:
A:对
B:错
答案: 【对】
见面课:深入学习自定义函数
1、问题:以下说法正确的是( )
选项:
A:用户若需要调用标准函数,调用前必须重新定义
B:用户可以直接调用所有标准库函数
C:用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D:用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数
答案: 【用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数】
2、问题:如果一个函数没有返回值,定义时它的函数类型应是( )
选项:
A:任意
B:int
C:void
D:无
答案: 【void】
3、问题:关于函数返回值的描述正确的是( )
选项:
A:函数返回表达式的类型一定与函数的类型相同
B:函数返回值的类型决定了返回值表达式的类型
C:当函数类型与返回值表达式类型不同时,将对返回值表达式的值进行类型转换
D:函数返回值类型就是返回值表达式类型
答案: 【当函数类型与返回值表达式类型不同时,将对返回值表达式的值进行类型转换】
4、问题:在参数传递过程中,对形参和实参的要求是( )
选项:
A:函数定义时,形参一直占用存储空间
B:实参可以是常量、变量或表达式
C:形参可以是常量、变量或表达式
D:形参和实参类型和个数都可以不同
答案: 【实参可以是常量、变量或表达式】
5、问题:关于函数的调用,下面说法不正确的是( )
选项:
A:由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行
B:函数的调用可以在任意函数之间进行,只要有需要
C:一个函数可以自己调用自己
D:函数返回时可以不带返回值,这时函数在定义时其返回值的类型用void表示
答案: 【由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行】
见面课:深入学习选择结构
1、问题:C语言的if语句中,用作判断的条件表达式为( )
选项:
A:任意表达式
B:逻辑表达式
C:关系表达式
D:算数表达式
答案: 【任意表达式】
2、问题:以下程序段的输出结果是( )int x,y,z;x=12,y=5;z=x>y?x++:y–;printf(“%d”,z);
选项:
A:14
B:15
C:13
D:4
答案: 【13】
3、问题:C语言的跳转语句中,对于break和continue说法正确的是( )。
选项:
A:continue语句只应用于循环体中
B:break语句只应用于循环体中
C:break是无条件跳转语句,continue不是
D:break和continue的跳转范围不够明确,容易产生问题
答案: 【continue语句只应用于循环体中】
4、问题:下面程序段的输出为( )int a=15, b=10, c=20, d;d = a > 12 ? b : c;switch(d){ case 5: printf(“%d,”, a); case 10: printf(“%d,”, b); case 20: printf(“%d,”, c); default: printf(“#”);}
选项:
A:15,10,20,#
B:10,20,#
C:10,20
D:10
答案: 【10,20,#】
见面课:进一步学习函数参数和一维数组
1、问题:若有定义:int x,pb;则真确的赋值表达式是:( )
选项:
A:pb=&x
B: pb=x
C:pb=&x
D:pb=x
答案: 【pb=&x 】
2、问题:若有以下定义语句:int a,b,p; float c,q; 则赋值真确的是( )
选项:
A:p=&c
B:q=p
C:p=NULL
D:q=new int
答案: 【p=NULL】
3、问题:对于数组说法错误的是( )
选项:
A:必须先定义,后使用
B:定义时数组的长度可以用一个已经赋值的变量表示
C:数组元素引用时下标从0开始
D:数组中的所有元素必须是同一种数据类型。
答案: 【定义时数组的长度可以用一个已经赋值的变量表示】
4、问题:下面不可真确定义一维数组的是( )
选项:
A:int n=5;int a[n];
B:int a[5];
C:int a[]={1,2,3,4};
D:int a[23];
答案: 【int n=5;int a[n];】
5、问题:若有声明int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};则数组第一维的大小为( )
选项:
A:2
B:3
C:4
D:不能确定的值
答案: 【3】
6、问题:若有定义int a[ ]={2.\,4,6,8,10,12},p=a; 则p+1和*(p+1)的值分别是( )
选项:
A:&a[0] 2
B:&a[0] 4
C:&a[1] 2
D:&a[1] 4
答案: 【&a[1] 4】
第一章 单元测试
1、 问题:
第一个高级语言Fortran出现在( )年
选项:
A:1946
B:1954
C:1950
D:1956
答案: 【
1954
】
2、 问题:
下列关于计算机语言的叙述中,正确的是( )
选项:
A:在计算机语言中,只有机器语言属于低级语言
B:高级语言的源程序可以被计算机直接执行
C:C语言属于高级语言
D:机器语言是与所有机器无关的语言
答案: 【
C语言属于高级语言
】
3、 问题:
源程序test.c经编译产生的目标文件和连接后产生的可执行文件是( )
选项:
A:test.bak和test.obj
B:test.obj和test.exe
C:test.exe 和test.c
D:test.bak和test.exe
答案: 【
test.obj和test.exe
】
4、 问题:
在算法的流程图表示中,菱形表示( )
选项:
A:算法条件的转移操作
B:算法的输入/输出操作
C:算法的各种处理功能
D:算法的开始与结束
答案: 【
算法条件的转移操作
】
5、 问题:
关于结构化程序设计阐述正确的是( )
选项:
A:采用结构化程序设计方法,可以把一个模块的功能逐步分解细化
B:结构化程序设计方法不一定能提高软件开发效率
C:结构化程序设计中使用顺序结构,可以不按各个模块出现的先后顺序进行程序执行
D:结构化程序设计中使用循环结构,可以无限循环
答案: 【
采用结构化程序设计方法,可以把一个模块的功能逐步分解细化
】
第二章 单元测试
1、 问题:
以下定义语句中正确的是( )
选项:
A:char a='A' b='B';
B:float a=b=10.0;
C:int a=10, b=&a;
D:float a,b=&a;
答案: 【
int a=10, *b=&a;
】
2、 问题:
下列选项中,不能用作标识符的是( )
选项:
A:1234
B:1_2
C:int_2
D:2_int_
答案: 【
2_int_
】
3、 问题:
有以下定义语句double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是( )
选项:
A:a=a+b=b++
B:
w%((int)a+b)
C:(c+w)%(int)a
D:
w=a==b;
答案: 【
(c+w)%(int)a
】
4、 问题:
有以下程序:
main()
{int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf{"%d",x);
}
程序运行后的输出结果是( )
选项:
A:3
B:5
C:-1
D:-2
答案: 【
-2
】
5、 问题:
表达式3.6-5/2+1.2+5%2的值是( )
选项:
A:4.3
B:4.8
C:3.3
D:3.8
答案: 【
3.8
】
第三章 单元测试
1、 问题:
下列语句中符合C语言语法的赋值语句是( )
选项:
A:a=7+b+c=a+7;
B:a=7+b++=a+7;
C:a=7+b,b++,a+7
D:a=7+b,c=a+7;
答案: 【
a=7+b,c=a+7;
】
2、 问题:
下面程序的输出是( )
main()
{ int x=10,y=3;
printf("%d",y=x/y);}
选项:
A:0
B:1
C:3
D:不确定的值
答案: 【
3
】
3、 问题:
下面程序的输出是( )
main()
{ int x=023;21
printf(%d",–x);
}
选项:
A:17
B:18
C:23
D:24
答案: 【
18
】
4、 问题:
设有如下程序段:
int x=2002, y=2003;
printf("%d",(x,y));
则以下叙述中正确的是( )
选项:
A:输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B:运行时产生出错信息
C:输出值为2002
D:输出值为2003
答案: 【
输出值为2003
】
5、 问题:
有定义语句:int x, y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是( )
选项:
A:11 12<回车>
B:11,<空格>12<回车>
C:11,12,<回车>
D:11,<回车>12<回车>
答案: 【
11 12<回车>
】
第四章 单元测试
1、 问题:
关于C语言逻辑值的说法错误的是( )
选项:
A:逻辑值只有两个值,表示为1和0
B:C语言中没有逻辑数据类型
C:C语言中有逻辑数据类型
D:逻辑值以整型类型保存
答案: 【
C语言中有逻辑数据类型
】
2、 问题:
下列运算符中优先级最低的是( )
选项:
A:||
B:!=
C:<=
D:+
答案: 【
||
】
3、 问题:
算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( )
选项:
A:算术运算、赋值运算、关系运算
B:算术运算、关系运算、赋值运算
C:关系运算、赋值运算、算术运算
D:关系运算、算术运算、赋值运算
答案: 【
算术运算、关系运算、赋值运算
】
4、 问题:
以下关于if语句的错误描述是( )
选项:
A:条件表达式可以是任意的表达式
B:条件表达式只能是关系表达式或逻辑表达式
C:条件表达式的括号不能省
D:与else配对的if语句是其之前最近的未配对的if语句
答案: 【
条件表达式只能是关系表达式或逻辑表达式
】
5、 问题:
main()
{ int x=0,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(“a=%d,b=%d”,a,b);}
该程序的输出结果是( )
选项:
A:a=2,b=1
B:a=1,b=1
C:a=1,b=0
D:a=2,b=2
答案: 【
a=2,b=2
】
第五章 单元测试
1、 问题:
对于do…while语句,下列说法中正确的是( )
选项:
A:用do…while语句可实现分支程序设计
B:当循环条件不成立时,至少也要执行一次循环体
C:当循环条件不成立时,一次也不执行循环体
D:do…while与while结构完全相同
答案: 【
当循环条件不成立时,至少也要执行一次循环体
】
2、 问题:
下列程序段执行时,若从键盘输入23,则输出为( )
int c,num;
scanf("%d",&num);
do
{c=num%10;printf("%d",c);
num=num/10;
}while(num>0);
printf("
");
选项:
A:3,2
B:3
C:2
D:2, 3
答案: 【
3,2
】
3、 问题:
有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i++) s=s+i;
printf(“%d”,s);
}
程序执行后的输出结果是 ( )
选项:
A:自然数1~9的累加和
B:自然数1~10的累加积
C:自然数1~9中的奇数之和
D:自然数1~10中的偶数之和
答案: 【
自然数1~9的累加和
】
4、 问题:
若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( )
for (i=5;i;i–)
for(j=0;j<4;j++){…}
选项:
A:20
B:25
C:24
D:30
答案: 【
25
】
5、 问题:
有以下程序段
int k = 10 ;
while( k == 0 ) k = k – 1 ;
则下面描述中正确的是( )
选项:
A:while循环执行10次
B:循环是无限循环
C:循环体语句一句也不执行
D:循环体语句执行一次
答案: 【
循环体语句一句也不执行
】
第六章 单元测试
1、 问题:
C语言中,下列不合法的字符常量是( )
选项:
A:‘ÿ’
B:‘5’
C:‘&’
D:‘8’
答案: 【
‘8’
】
2、 问题:
有以下程序
main()
{ char a,b,c,d;
scanf{"%c,%c,%d,%d",&a,&b,&c,&d);
printf{"%c,%c,%c,%c
",a,b,c,d);}
若运行时从键盘上输入:6,5,65,66 <回车> 。则输出结果是( )
选项:
A:6,5,A,B
B:6,5,65,66
C:6,5,6,5
D:6,5,6,6
答案: 【
6,5,A,B
】
3、 问题:
有定义语句: int b;char c[10];, 则正确的输入语句是( )
选项:
A:scanf("%d%s",&b,&c);
B:scanf("%d%s",&b,c);
C:scanf("%d%s",b,c);
D:scanf("%d%s",b,&c);
答案: 【
scanf("%d%s",&b,c);
】
4、 问题:
以下程序运行后的输出结果是( )。
main()
{ char c1,c2;
for(c1='0',c2='5';c1<c2;c1++,c2–) printf("%c%c",c1,c2);
printf("
");
}
选项:
A:012345
B:051423
C:035241
D:543210
答案: 【
051423
】
5、 问题:
已知字符A的ASCII代码值为65, 以下程序运行时若从键盘输入: B33<回车>。则输出结果是( )。
#include <stdio.h>
main()
{ char a,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0'; b=b*2;
printf("%c %c"a,b); }
选项:
A:1 B
B:2 B
C:1 A
D:2 A
答案: 【
1 B
】
第七章 单元测试
1、 问题:
#include<stdio.h>
func(int x)
{ x=10;
printf(“%d, ”,x); }
main( )
{ int x=20;
func(x);
printf(“%d”, x); }
运行结果为( )
选项:
A:20, 20
B:20,10
C:10, 20
D:10, 10
答案: 【
10, 20
】
2、 问题:
有以下程序
int f(int a)
{ return a%2;}
main()
{ int s[8]={1,3,5,2,4,6},i,d=0;
for(i=0;f(s[i]);i++)d+=s[i];
printf("%d",d);}
程序运行后的输出结果是( )
选项:
A:9
B:11
C:19
D:21
答案: 【
9
】
3、 问题:
#include <stdio.h>
void main()
{ int max(flaot x, float y);
float a, b;
int c;
scanf(“%f,%f”, &a, &b);
c=max(a, b);
printf(“Max is %d”, c);}
int max(float x, float y)
{ float z;
z = x > y ? x : y;
return z;}
函数max的返回值是什么数据类型( )
选项:
A:float
B:int
C:void
D:无返回值
答案: 【
int
】
4、 问题:
以下叙述中正确的是( )
选项:
A:局部交量说明为static存储类,其生存期将得到延长
B:全局变量说明为static存储类,其作用域将被扩大
C:任何存储类的变量在未赋初值时,其值都是不确定的
D:形参可以使用的存储类说明符与局部变量完全相同
答案: 【
局部交量说明为static存储类,其生存期将得到延长
】
5、 问题:
程序中对fun函数有如下说明
void *fun();
此说明的含义是( )
选项:
A:fun函数无返回值
B:fun函数的返回值可以是任意的数据类型
C:fun函数的返回值是无值型的指针类型
D:指针fun指向一个函数,该函数无返回值
答案: 【
fun函数的返回值是无值型的指针类型
】
第八章 单元测试
1、 问题:
“&”称为取地址运算符
选项:
A:对
B:错
答案: 【
对
】
2、 问题:
以下程序段的输出结果是( )
int var,ab;
ab=100;
var=&ab;
ab=var+10;
printf("%d
",*var);
选项:
A:100
B:不确定
C:110
D:90
答案: 【
110
】
3、 问题:
指针的基类型是指指针的类型
选项:
A:对
B:错
答案: 【
错
】
4、 问题:
两个指针变量的值相等时,表明两个指针变量是( )
选项:
A:占据同一内存单元
B:指向同一内存单元地址或者都为空
C:是两个空指针
D:都没有指向
答案: 【
指向同一内存单元地址或者都为空
】
5、 问题:
若有定义:int x,pb; 则以下正确的赋值表达式是( )
选项:
A:pb=&x
B:pb=x
C:pb=&x
D:pb=x
答案: 【
pb=&x
】
第九章 单元测试
1、 问题:
数组的下标从1开始
选项:
A:对
B:错
答案: 【
错
】
2、 问题:
C语言调用函数中,当数组名做实参时,实参和形参之间的传递方式是按地址传递
选项:
A:对
B:错
答案: 【
对
】
3、 问题:
若有以下定义:
double w[10];
则w数组元素下标的上限是10
选项:
A:对
B:错
答案: 【
错
】
4、 问题:
若有如下定义,则( )是对数组元素 int a[10] , p ; p=a ;的正确引用
选项:
A:&a[10]
B:a[11]
C:(p+2)
D:p
答案: 【
(p+2)
】
5、 问题:
若有以下定义和语句,且0<=i<5,则( )是对数组元素地址的正确表示
int a[]={1,2,3,4,5},*p,i; p=a;
选项:
A:&(a+i)
B:&p
C:a++
D:&p[i]
答案: 【
&(a+i)
】
第十章 单元测试
1、 问题:
已有定义: char a[]="xyz",b[]={'x','y','z'};, 以下叙述中正确的是( )
选项:
A:数组 a 和 b 的长度相同
B:a数组长度小于 b 数组长度
C:a 数组长度大于 b 数组长度
D:其余说法都不对
答案: 【
a 数组长度大于 b 数组长度
】
2、 问题:
有以下程序
main()
{ char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s",p);}
程序运行后的输出结果是( )
选项:
A:ABCD
BCD
CD
D
B:A
B
C
D
C:B
C
D
D:BCD
CD
D
答案: 【
BCD
CD
D
】
3、 问题:
有以下程序
main()
{ char s[]="159",p;
p=s;
printf("%c",p++);
printf("%c",*p++);
}
程序运行后的输出结果是( )
选项:
A:15
B:16
C:12
D:59
答案: 【
15
】
4、 问题:
有以下程序
main()
{ char a[7]="a0a0";int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d
",i,j);
}
程序运行后的输出结果是( )
选项:
A:2 2
B:7 6
C:7 2
D:6 2
答案: 【
7 2
】
5、 问题:
设有以下定义和语句 char str[20]="Program",p;p=str;则以下叙述中正确的是( )
选项:
A:p与str[0]中的值相等
B:str与p的类型完全相同
C:str数组长度和p所指向的字符串长度相等
D:数组str位中存放的内容和指针变量p中存放的内容相同
答案: 【
*p与str[0]中的值相等
】
第十一章 单元测试
1、 问题:
已知学生记录描述为:
struct student
{
int num;
char name[20];
struct
{
int year;
int month;
int day;
}birth;
};
struct student s;
下列对“生日”的正确赋值方式是( )
选项:
A:year=1980; month=6; day=11;
B:birth.year=1980;birth.month=6;birth.day=11;
C:s.year=1980; s.month=6; s.day=11;
D:s.birth.year=1980; s.birth.month=6; s.birth.day=11;
答案: 【
s.birth.year=1980; s.birth.month=6; s.birth.day=11;
】
2、 问题:
若有以下说明和定义
typedef int INTEGER
INTEGER p,q;
以下叙述正确的是( )
选项:
A:p是int型变量
B:p是基类型为int的指针变量
C:q是基类型为int的指针变量
D:程序中可用INTEGER代替int类型名
答案: 【
p是基类型为int的指针变量
】
3、 问题:
设有如下定义:
struct sk
{
int a;
float b;
}data;
int p;
若要使p指向data中的a域,正确的赋值语句是( )
选项:
A:p=&a;
B:p=data.a;
C:p=&data.a;
D:p=data.a
答案: 【
p=&data.a;
】
4、 问题:
有以下程序
struct STU
{
char num[10];
float score[3];
}
main()
{
struct STU s[3]={
{"20021",90,95,85},
{"20022",95,80,75},
{"20023",100,95,90}
},*p=s;
int i; float sum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf("%6.2f
",sum);
}
程序运行后的输出结果是( )
选项:
A:260.00
B:270.00
C:280.00
D:285.00
答案: 【
270.00
】
5、 问题:
下面程序的输出结果为( )
struct st
{ int x;
int y;
} p;
int dt[4]={10,20,30,40};
struct st
aa[4]={ 50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] };
main()
{
p=aa;
printf("%d ", ++p->x );
printf("%d ", (++p)->x);
printf("%d
", ++( *p->y));
}
选项:
A:10 20 20
B:50 60 21
C:51 60 21
D:60 70 31
答案: 【
51 60 21
】
第十二章 单元测试
1、 问题:
适宜采用inline定义函数情况是( )
选项:
A:函数体含有循环语句
B:函数体含有递归语句
C:函数代码少、频繁调用
D:函数代码多、不常调用
答案: 【
函数代码少、频繁调用
】
2、 问题:
函数重载是指( )
选项:
A:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B:两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C:两个以上的函数名字不同,但形参的个数或类型相同
D:两个以上的函数取相同的函数名,并且函数的返回类型相同
答案: 【
两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
】
3、 问题:
下列( )的调用方式是引用调用
选项:
A:形参和实参都是变量
B:形参是指针,实参是地址值
C:形参是引用,实参是变量
D:形参是变量,实参是地址值
答案: 【
形参是引用,实参是变量
】
4、 问题:
以下正确的描述是( )
选项:
A:不允许设置参数的默认值
B:设置参数的默认值只能在定义函数时设置
C:设置参数的默认值时,应该设置右边的参数
D:设置参数的默认值时,应该全部参数都设置
答案: 【
设置参数的默认值时,应该设置右边的参数
】
5、 问题:
当执行cin语句时,从键盘上输入每个数据后必须接着输入一个>>,然后才能继续输入下一个数据
选项:
A:对
B:错
答案: 【
错
】
第十三章 单元测试
1、 问题:
类的实例化是指( )
选项:
A:定义类
B:创建类的对象
C:指明具体类
D:调用类的成员
答案: 【
创建类的对象
】
2、 问题:
对于友元描述正确的是( )
选项:
A:友元是本类的成员函数
B:友元不是本类的成员函数
C:友元不是函数
D:友元不能访问本类私有成员
答案: 【
友元不是本类的成员函数
】
3、 问题:
类中定义的成员默认访问属性为( )
选项:
A:public
B:private
C:protected
D:friend
答案: 【
private
】
4、 问题:
下面说法正确的是( )
选项:
A:生成对象时调用析构函数
B:定义类时必须写出该类的构造函数
C:主函数中的调用格式决定系统调用哪个构造函数
D:析构函数不可以重载
答案: 【
主函数中的调用格式决定系统调用哪个构造函数
】
5、 问题:
下述静态数据成员的特征中,( )是错误的
选项:
A:说明静态数据成员时前边要加修饰符static
B:静态数据成员要在类体外进行初始化
C:引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D:静态数据成员不是所有对象所共用的
答案: 【
静态数据成员不是所有对象所共用的
】
6、 问题:
静态成员函数直接访问类的数据成员( )
选项:
A:是不允许的
B:只允许是静态数据成员
C:只允许是非静态数据成员
D:可允许是静态数据成员或非静态数据成员
答案: 【
只允许是静态数据成员
】
第十四章 单元测试
1、 问题:
派生类的对象对它的哪一类基类成员是可以访问的( )
选项:
A:公有继承的基类的公有成员
B:公有继承的基类的保护成员
C:公有继承的基类的私有成员
D:保护继承的基类的公有成员
答案: 【
公有继承的基类的公有成员
】
2、 问题:
下面对派生类的描述中,错误的是( )
选项:
A:一个派生类可以作为另外一个派生类的基类
B:派生类至少有一个基类
C:派生类的成员除了它自己的成员外,还包含了它的基类的成员
D:派生类中继承的基类成员的访问权限到派生类中保持不变
答案: 【
派生类中继承的基类成员的访问权限到派生类中保持不变
】
3、 问题:
当保护继承时,基类的( )在派生类中成为保护成员,不能通过派生类的对象直接访问
选项:
A:任何成员
B:公有成员和保护成员
C:公有成员和私有成员
D:私有成员
答案: 【
公有成员和保护成员
】
4、 问题:
设置虚基类的目的是( )
选项:
A:简化程序
B:消除二义性
C:提高运行效率
D:减少目标代码
答案: 【
消除二义性
】
5、 问题:
多继承时,多个基类中的同名的成员在派生类中由于标识符不唯一而出现封装性
选项:
A:对
B:错
答案: 【
错
】
第十五章 单元测试
1、 问题:
下列关于运算符重载的描述中,( )是正确的
选项:
A:运算符重载可以改变操作数的个数
B:运算符重载可以改变优先级
C:运算符重载可以改变结合性
D:运算符重载不可以改变语法结构
答案: 【
运算符重载不可以改变语法结构
】
2、 问题:
下列运算符中,( )运算符在C++中不能重载
选项:
A:?:
B:+
C:|
D:<=
答案: 【
?:
】
3、 问题:
以下关于C++运算符重载的描述中,正确的是( )
选项:
A:任何运算符均可重载
B:运算符重载可以改变运算符的优先级
C:运算符重载可创造新的运算符
D:运算符重载可以改变运算符的功能
答案: 【
运算符重载可以改变运算符的功能
】
4、 问题:
运算符重载可以改变运算符的功能
选项:
A:对
B:错
答案: 【
错
】
5、 问题:
在C++中,运算符的重载有两种实现方法,一种是通过成员函数实现,另一种则通过友元函数实现
选项:
A:对
B:错
答案: 【
对
】
第十六章 单元测试
1、 问题:
假设声明了以下的函数模板,错误的调用语句是( )
template <class T>
T max(T x,T y){ retum(x>y)?x:y;}
并定义了int i; char c;
选项:
A:max(i, i)
B:max(c,c)
C:max((int)c, i)
D:max(i, c)
答案: 【
max(i, c)
】
2、 问题:
定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来( )
选项:
A:<>
B:“”
C:()
D:{}
答案: 【
<>
】
3、 问题:
下列有关模板和继承的叙述正确的是 ( )
选项:
A:模板和继承都可以派生出一个类系
B:从类系的成员看,模板类系的成员比继承类系的成员较为稳定
C:从动态性能看,继承类系比模板类系具有更多的动态特性
D:相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系
答案: 【
相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系
】
4、 问题:
下列叙述错误的是( )
选项:
A:catch(…)语句可捕获所有类型的异常
B:一个try语句可以有多个catch语句
C:catch(…)语句可以放在catch语句组的中间
D:程序中try语句与catch语句是一个整体,缺一不可
答案: 【
catch(…)语句可以放在catch语句组的中间
】
5、 问题:
下列叙述错误的是( )
选项:
A:当catch语句捕获一个异常后,可能不能完全处理异常
B:在try块中抛出异常后,程序最后回到try块中继续执行后面的语句
C:一个程序中可以有try语句而没有throw语句
D:throw语句抛出的异常可以不被捕获
答案: 【
在try块中抛出异常后,程序最后回到try块中继续执行后面的语句