西北工业大学C++程序设计mooc单元检测答案

B站影视 2024-12-06 11:06 3

摘要:如果X为负数,由[X]补求[-X]补是将([X]补连同符号位一起各位变反,未位加1)。

作为一名大一新生,网上搜这个答案竞需要收费,整理了一份,供参考,有错误望指正。

第1讲 C++语言概述

1.以下都可用作计算机输入设备的是(键盘,鼠标,扫描仪,数码相机)。

2.CPU中包含控制器和(运算器)。

3.下列语言不属于高级语言中的是(机器语言)。

4.正确的C++语言标识符是(sum_2)。

5.对C++语言和C语言的兼容性,描述正确的是(C++兼容C)。

第2讲 信息的表示与存储

1.下列数中最大的数为【(2C)H】。

2.如果X为负数,由[X]补求[-X]补是将([X]补连同符号位一起各位变反,未位加1)。

3.以下叙述错误的是(浮点数中,阶码的位数越长,能表示的精度越高)。

4.二进制数101101.101转换为十进制数、八进制数和十六进制数的结果分别是(45.625、55.5、2D.A)。

5.字符型数据'A'存放在计算机中(实际存放的是'A'的ASCII码值65)。

第3讲 程序中数据的表示

1.类型修饰符unsigned不能修饰(float)。

2.在C++语言的数据类型中,int,short等类型的长度是(与机器字长有关的)。

3.‌下列选项中,均是合法的整型常量的是(A)。

4.下列选项中,均是合法的实型常量的是(B)。

5.下列字符串常量表示中,哪个是错误的( "\"yes"or\"No\"")。

6.字符串”\t\v\\\0which\n”的长度是(3)。

7.以下不是C++语言支持的存储类别的是(dynamic)。

8.下列不是C++语言的合法用户标识符的是(a#b)。

9.下列字符列中,可作为C++语言程序自定义标识符是(file)。

10.下列属于逻辑运算的一组算式是(1+1=1)。

第4讲 运算符与表达式

1.命题“1020”的C++语言表达式是【((m>10)&&(m20))】。

2.设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是(0)。

3.若x是一个bool型变量,y是一个值为100的int型变量,则表达式 !x && y>0 的值为(与x的值相反)。

4.设变量m,n,a,b,c,d均为0,执行(m = a==b)&&(n=c==d)后,m,n的值是(1,1)。

5.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是(6.000000)。

6.以下非法的赋值表达式是【++(i+1)】。

7.设int x=2,y=4,z=7;则执行x=y--<=x| | x+y!=z后x,y的值分别为(1,3)。

8.表达式!x等效于(x==0)。

9.设以下变量均为int类型,则值不等于7的表达式是【(x=6,x+1,y=6,x+y)】。

10.在下列成对的表达式中,运算符“+”的意义不相同的一对是(5.0+2.0和5+2)。

第5讲 顺序结构的程序设计

1.输入输出格式控制是在哪个头文件中定义的(iomanip.h)。

2.对于语句cout

3.在ios中提供控制格式的标志位中,哪个是转换为十六进制形式的标志位(hex)。

4.定义变量:char one_char;则语句cout

printf(“%c”,one_char);】。

5.若有定义“int x=17;”,则语句“cout

6.与C语言printf("Hello,World\n");语句功能相同的C++语句是(cout

7.与语句cout

8.下列程序的运行结果是(0)。

9.执行下列代码,程序的输出结果是(用下划线表示空格)(_29100)。

10.执行下列代码,程序的输出结果是(Hex:ff)。

第6讲 选择结构的程序设计

1.流程控制语句的基本控制结构有三种,不属于这一种结构的是(计算结构)。

2.在设计程序时,应采纳的原则之一是(程序结构应有助于读者理解)。

3.if语句的语法格式可描述为:格式1:if()或if()else 关于上面的语法格式,下列表述中错误的是【部分可以是一个if语句,例如if(if(a==0)……)……】。

4.在if语句中的表达式是(可以是任意表达式)。

5.执行如下语句序列,不可能出现的情况是(显示:AB)。

6.阅读下面的程序,如果两次执行上述程序,且键盘输入分别是4和6,则输出结果是(5,7)。

7.下列描述正确的是(如果至少有一个操作数为true,则包含||运算符的表达式为true)。

8.执行如下语句序列,不可能出现的情况是(显示:A)。

9.关于switch语句的说明中,错误的是(switch结构不可以嵌套)。

10.将以下程序写成三目运算表达式语句是【max=(a>b)?a:b】。

第7讲 循环结构的程序设计

1.while(!x)中的(!x)与下面哪个条件等价(x==0)。

i=5,下列do-while循环语句的循环次数为(无限)。

3.下面程序段(将输出###)。

4.for(int x=0,y=0;!x&&y

5.以下程序的输出结果是(1,2,2,5)。

6.下面有关for循环的正确描述是(for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来)。

7.C++语言的跳转语句中,对于break和continue说法正确的是(continue语句只应用与循环体中)。

8.下列循环语句的循环次数是(0)。

9.下面程序的输出结果是(0*000)。

10.下面程序的输出结果是(C)。

第8讲 循环结构的设计

1.程序填空完成功能:求出1000以内的全部素数(isprime=0)。

2.程序填空完成功能:求分数序列2/1,3/2,5/3,8/5,13/8 ……的前20项之和(m=t+m 或 m=m+t 或 m=t+n 或 m=n+t)。

3.程序填空完成功能:有一堆机器零件(零件个数小于100),3个为一组则剩下2个,5个为一组则剩下1个,7个为一组则剩下6个,求这堆零件一共有多少个【i%3==2&&i%5==1&&i%7==6 或 (i%3==2)&&(i%5==1)&&(i%7==6) 或 (i%3==2&&i%5==1&&i%7==6)】。

第9讲 函数的定义和使用

1.下列特性中,C与C++共有的是(函数定义不能嵌套)。

2.必须用一对大括号括起来的程序段是(函数的函数体)。

3.关于C++主函数特性,下列叙述正确的是(每个C++程序都必须有一个main函数)。

4.在C++语言中,main函数默认返回一个(int)类型的值。

5.C++语言中规定函数的返回值的类型是由(在定义该函数时多指定的数据类型所决定)。

6.若调用一个函数,且此函数中没有return语句,则正确的说法是该函数(有返回值,但返回一个不确定的值)。

7.下列叙述中错误的是(调用函数必须在一条独立的语句中完成)。

8.在C++中把不返回任何类型的函数应该说明为(void)。

9.在函数的定义格式中,下面各组成部分中,(函数参数)是可以省略的。

10.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为(2)。

第10讲 函数的设计

1.指出下列对定义重载函数的要求中,(要求参数的个数相同)是错误的。

2.一个函数为void x(int,char ch=’a’),另一个函数为void x(int),则它们(可以在同一程序中定义,但不可以重载)。

3.重载函数在调用时选择的依据中,错误的是(函数返回值类型)。

4.下列函数原型声明中错误的是【void fun(int x=0,int y)】。

5.一个函数带有参数说明时,则参数的默认值应该在(函数定义或声明)中给出。

6.下列关于函数参数默认值的描述中,正确的是(若一个函数含有多个参数,其中一个参数设置成默认值后,其后所有参数都必须设置默认值)。

7.模板函数的真正代码是在(源程序中的调用函数时)时候产生。

8.以下关于函数模板叙述正确的是(通过使用不同的类型参数,函数模板可以生成不同类型的函数)。

9.常情况下,函数模板中的类型参数个数不能是(0)。

10.实现两个相同类型数加法的函数模板的声明是【T add(T x,T y)】。

第11讲 函数的调用

1.在参数传递过程中,对形参和实参的要求是(实参可以是常量、变量或表达式)。

2.在函数的引用调用时,实参和形参应该是使用(变量值和引用)。

3.‍使用值传递方式将实参传给形参,下列说法正确的是(形参是实参的备份)。

4.下列函数调用中对调用它的函数没有起到任何作用的是(void f3(double x){--x;})。

5.对于某个函数调用,不给出调用函数的声明的情况是(函数的定义在调用处之前)。

6.在哪种情况下适宜采用 inline 定义内联函数(函数代码少、频繁调用)。

7.下列哪个类型函数不适合声明为内联函数(函数体语句较多)。

8.在C++中,编写一个内联函数Fsqu,使用double类型的参数,求其平方并返回,返回值为double类型,下列定义正确的是(inline double Fsqu (double x){return x*x;})。

9.已知递归函数f的定义如下,则函数调用语句f(5)的返回值是(15)。

10.在一个函数体中直接或间接地调用函数本身,这种调用称为(递归)调用。

第12讲 作用域、生命期和程序的组织结构

1.不能实现函数之间数据传递的是(局部变量)。

2.所有在函数中定义的变量,连同形式参数,都是(局部变量)。

3.内部静态变量的作用域是(定义该静态变量的函数内部)。

4.进行初始化即可自动获取初值为0的变量是(全局变量和用static修饰的局部变量)。

5.在函数中,可以用auto,extern,register和static四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是(auto)。

6.在一个C++源程序文件中定义的全局变量的有效范围是(从定义变量的位置开始到本源程序文件结束)。

7.在C++中有以下4条语句:执行这4条语句后输出为(300)。

8.下面关于C++语言变量的叙述错误的是(自动变量和外部变量的作用域为整个程序)。

9.如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,则说明这个函数为(内部函数)。

10.重新定义标识符的作用域规定是外层变量被隐藏,(内层)变量是可见的。

第13讲 数组的定义和使用

1.下列关于数组的描述正确是(数组的长度是固定的,而其中元素的数据类型必须相同)。

2.在C++语言中引用数组元素时,下面关于数组下标数据类型的说法错误的是(任何类型的表达式)。

3.要定义数组A,使得其中每个元素的数据分别依次为:3、9、4、8、0、0、0,错误的定义语句是(int A={3,9,4,8})。

4.有如下数组声明:int value[30];,下标值引用错误的是(value[30])。

5.以下叙述中错误的是(当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息)。

6.以下正确的二维数组定义是(int a[3]={1,2,3,4,5,6})。

7.以下对二维数组a进行初始化正确的是(int a[3]={{1,2,3},{4,5,6}})。

8.若有定义:int a[3][4];则正确引用数组a元素的是(a[0][0])。

9.若有定义:int a[4]={0,0};以下叙述中错误的是(只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0)。

10.下面选项中等价的是(int a[3]= {1,0,2,2,4,5}与int a[2][3]= {1,0,2,2,4,5})。

第14讲 数组与函数

1.若用数组名作为函数调用的实参,传递给形参的是(数组的首地址)。

2.‌对数组名作函数的参数,下面描述正确的是(数组名作函数的参数,主调函数和被调函数共用一段存储单元)。

3.已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是(int MAT[10])。

4.设主调用函数为如下程序段,则函数f中对形参数组定义错误的是【

f(int array[3])】。

5.下面程序执行后的输出结果是(18)。

6.下面程序执行后的输出结果是(12334)。

7.下面程序执行后的输出结果是(5335)。

8.下面程序执行后的输出结果是(11)。

第15讲 字符串的处理

1.字符串的长度是(串中所含字符的个数)。

2.下列说法正确的是(当字符串放在字符数组中,这时要求字符数组长度比字符串长1个单元,因为要放字符串终结符’\0’)。

3.下面有关字符数组的描述中错误的是(可以在赋值语句中通过赋值运算对字符数组整体赋值)。

4.给出下面定义:则下列说法正确的是(数组a的长度大于数组b的长度)。

5.下面程序输出结果为(A)。

6.要使字符串变量str具有初值"Lucky",正确的定义语句是(char str ="Lucky")。

7.下列是为字符数组赋字符串的语句组,其中错误是(char s[10]; s=”program”)。

8.字符数组s不能作为字符串使用的是(char s[5]={'h','a','p','p','y'})。

9.下面程序段执行后的输出结果是(ab)。

10.下面程序执行后的输出结果是(SW*)。

第17讲 指针的定义与使用

1.下面对于指针的描述不正确的是(指针指向不同基类型的变量长度不同)。

2.在int a=3,int *p=&a;中,*p的值是(3)。

3.已知int a, *pa=&a;输出指针pa十进制的地址值的方法是【cout

4.变量的指针,其含义是指该变量的(地址)。

5.‌已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值是(ptr2=k)。

6.若有int *p,a=4;和p=&a;下面那个选项均代表地址(&a,&*p,p)。

7.若变量已正确定义并且指针p已经指向变量x,则*&x相当于(x)。

8.若定义了int m,n=0,*p1=&m;则下列哪个表达式与m=n等价(*p1=*&n)。

9.假如指针p已经指向整型变量x,则(*p)++相当于(x++)。

10.对于基类型相同的两个指针变量之间,不合理的运算是(+)。

第18讲 指针与数组

1.以下四种说法中,正确的一项是(C++允许在字符串上进行整体操作)。

2.定义如下一维数组:int a[5],*p=a;则下面描述错误的是(表达式a=a+1是合法的)。

3.‌若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则哪个不是对a数组元素的正确引用(其中0≤i

4.有如下程序段:执行该程序段后,*p的值为(2)。

5.若有定义 char s[10];则在下面表达式中不表示s[1]的地址的是(s++)。

6.若要对a进行合法的自减运算,则之前应有下面哪个说明(D)。

7.若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是【p1=x+2,*(p1++)】。

8.若有定义int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是【for(i=0;i

9.下面程序执行后的输出结果是(4)。

10.下面程序执行后的输出结果是(10)。

第19讲 指针与函数

1.下面程序执行后的输出结果是(b,B,A,b)。

2.下面程序执行后的输出结果是(abcDDfefDbD)。

3.‍以下函数的功能是(比较a和b所指字符串的大小)。

4.若有定义char *st="how are you";下列程序段中正确的是【char a[11],*p; strcpy(p=a+1,&st[4])】。

5.以下与库函数strcpy(char *p1,char *p2)功能不相等的程序段是(D)。

6.函数char* fun(char *p){ return p; }的返回值是(形参p中存放的地址值)。

7.若有定义int *f;中,标识符f代表的是(一个返回值为指针型的函数名)。

8.若有定义int(*p);标识符p可以(指向函数的入口地址)。

9.若有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是(p=max)。

10.若有以下说明和定义:在必要的赋值之后,对fun函数的正确调用语句是【a(&c)】。

第20讲 动态分配内存

1.‌对使用关键字new所开辟的动态存储空间,释放时必须使用(delete)。

2.‍关于动态存储分配,下列说法正确的是(动态分配的内存空间也可以被初始化)。

3.对new运算符的下列描述中,哪个是错误的(用它创建对象数组时必须指定初始值)。

4.若有以下定义,则释放指针所指内存空间的操作是(delete r)。

5.已知n是一个int型变量,下列语句中错误的是(long p[n])。

第21讲 自定义数据类型

1.设有结构体说明 struct ex { int x; float y; char z;} example;以下叙述中错误的是(

example是结构体类型名)。

2.以下哪个定义不会分配实际的存储空间(D)。

3.在说明一个结构体变量时,系统分配给它的存储空间是(该结构体中所有成员所需存储空间的总和)。

4.已知学生记录描述为:设结构变量s中的“birth”应是“1985年10月1日”,则下面正确的赋值是(D)。

5.设有定义struct ru{long x;float y;} time,*timep=&time;则对time中成员x的正确引用是【(*timep).x】。

6.有以下说明和定义:以下叙述中错误的是(程序段:data.a=5;cout

7.若有定义union data {char ch;int x;} a;下列语句中哪个是不正确的(a={'x',10})。

8.若有定义enum color {red,yellow=2,blue,white,black} r=white;执行cout

9.下面对typedef的叙述中错误的是(用typedef可以增加新类型)。

10.若有定义typedef struct {int n;char ch[8];} PER;以下叙述中正确的是(PER是结构体类型名)。

第22讲 自定义数据类型的应用——链表

1.链表不具有的特点是(可随机访问任一元素)。

2.链表结点所占存储空间(分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针)。

3.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是(p.next=&b)。

4.在单向链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的(直接后继)。

5.对于一个头指针为head的带头结点的单向链表,判定该表为空表的条件是(

head→next==NULL)。

6.以下结构体说明和变量定义,如图所示:现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是(p=q->next)。

7.有以下定义:且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是【

(*p).next=q; (*q).next=&b】。

8.有关双向链表的说法正确的是(双向链表的结点含有两个指针域,分别存放其直接前趋和直接后继结点的地址)。

9.链表是一种采用(链式)存储结构存储的线性表。

10.下面程序执行后的输出结果是(40)。

第23讲 预处理命令

1.以下叙述中错误的是(C++程序在执行过程中对预处理命令行进行处理)。

2.‍设#define P(x) x/x执行语句cout

3.在任何情况下计算平方都不会引起二义性的宏定义是【#define POWER(x) ((x)*(x))】。

4.下面程序执行后的输出结果是(9└┘5)。

5.若有宏定义:则表达式2*(N+Y(5+1))的值是(48)。

6.已知宏定义#define p(x,y,z) x=y*z;则宏替换p(a,x+5,y-3.1)应为(a=x+5*y-3.1;)。

7.‌下面程序执行后的输出结果是(6)。

8.下面程序执行后的输出结果是(4.5)。

9.‌在“文件包含”预处理命令形式中,当#include后面的文件名用" "(双引号)括起时,寻找被包含文件的方式是(先在源程序所在目录中搜索,再按系统设定的标准方式搜索)。

10.在“文件包含”预处理命令形式中,当#include后面的文件名用(尖括号)括起时,寻找被包含文件的方式是(直接按系统设定的标准方式搜索目录)。

第25讲 类的定义

1.下面关于类中概念的描述中错误的是(类就是C语言中的结构体类型)。

2.下列关于C++语言类的描述中错误的是(类与类之间必须是平等的关系,而不能组成层次结构)。

3.在面向对象设计中,对象有很多基本特点,其中“一个系统中通常包含很多类,这些类之间呈树形结构”这一性质指的是对象的(继承性)。

4.什么是成员(类的特征、类的方法、类的事件,D.以上全是)。

5.作用域运算符的功能是(标识某个成员是属于哪一类的)。

第26讲 对象的定义和使用

1.假定AA为一个类,a为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a的格式为【x.a】。

2.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(public)。

3.在用关键字class定义的类中,以下叙述正确的是(在类中,不作特别说明的数据成员均为私有类型)。

4.‌下列关于成员函数特征的描述中,错误的是(成员函数一定是内联函数)。

5.下列有关类的说法不正确的是(一个类只能有一个对象)。

第27讲 构造函数

1.类的构造函数被自动调用执行的情况是在定义该类的(对象时)。

2.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是(成员构造函数先执行)。

3.假定一个类的构造函数为“A(int aa=1, int bb=0) {a=aa; b=bb;}”, 则执行“A x (4);”语句后,x.a和x.b的值分别为(4和0)。

4.‍下列是构造函数的特点,是错误的是(构造函数必须指明其类型)。

5.构造函数不具备的特征的是(构造函数必须指定类型说明)。

第28讲 默认构造函数和复制构造函数

1.假定AB为一个类,则执行AB x(y);语句时将自动调用该类的(复制构造函数)。

2.通常,复制构造函数的参数是(某个对象的引用名)。

3.类的默认的复制构造函数(仅当未定义复制构造函数时存在)。

4.下列情况中,不会调用复制构造函数的是(将类的一个对象赋值给该类的另一个对象时)。

5.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为【

OneClass(OneClass & p)】。

第29讲 析构函数

1.下面有关类说法不正确的是(析构函数需要指定参数)。

2.对类的构造函数和析构函数描述正确的是(构造函数可以重载,析构函数不能重载)。

3.类的析构函数的作用是(撤销对象时要执行的操作)。

4.下面哪项是对构造函数和析构函数的正确定义【X::X(参数), X::~X】。

5.以下有关析构函数的叙述不正确的是(析构函数可以有形参)。

第30讲 对象数组和对象指针

1.有以下的类定义:则执行语句MyClass a,b[2],*p[2];后,程序的输出结果是(111)。

2.‍已知p是一个指向类sample数据成员m的指针,s是类sample的一个对象。如果要给m赋值为5,哪个是正确的(s.*p=5)。

3.假定AA是一个类,“AA* abcconst;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc调用该成员函数后,x的值(不变)。

4.‍下列关于this指针的叙述中,正确的是(this指针表示了成员函数当前操作的数据所属的对象)。

5.this指针存在的目的是(保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码)。

第31讲 类作用域、对象生命期、const限定

1.定AA是一个类,“AA* abcconst;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc调用该成员函数后,x的值(不变)。

2.对于常数据成员,下面描述正确的是(常数据成员必须被初始化,并且不能更新)。

3.下列不能作为类的成员的是(自身类对象)。

第32讲 静态成员和友元

1.静态数据成员的初始化必须在(类外)。

2.静态成员函数没有(this指针)。

3.下列不是描述类的成员函数的是(友元函数)。

4.下面关于友元的描述中,错误的是(类与类之间的友元关系可以继承)。

5.已知类A是类B的友元,类B是类C的友元,则(类A的成员函数可以访问类B的对象的任何成员)。

第33讲 类的继承与派生

1.定义新类是通过什么实现的(继承机制)。

2.继承具有(传递性),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

3.C++类体系中,不能被派生类继承的有(构造函数)。

4.C++的继承性允许派生类继承基类的(所有特性,并允许增加新的特性或重定义基类的特性)。

5.对基类和派生类的关系描述中,错误的是(基类继承了派生类的属性)。

第34讲 派生类成员的访问

1.若要用派生类的对象访问基类的保护成员,以下观点正确的是(不可能实现)。

2.派生类的对象对它的基类成员中(公有继承的公有成员)是可以访问的。

3.下列说法中错误的是(私有继承时基类中的protected成员在派生类中仍是protected成员)。

4.下面叙述不正确的是(基类的公有成员在派生类中仍然是公有的)。

5.若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的(私有成员)。

第35讲 派生类的构造和析构函数

1.有如下程序:执行这个程序屏幕上将显示输出(AB)。

2.派生类的构造函数的成员初始化列表中,不能包含(基类中子对象的初始化)。

3.假设ClassY:publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为(X,Y,Y,X)。

4.以下有关继承的叙述正确的是(派生类是基类的组合)。

5.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(类、对象成员所属类、自己所属类的构造函数)。

第36讲 多重继承

1.下列关于多继承二义性的描述中,错误的是(基类和派生类中同时出现的同名函数,也存在二义性问题)。

2.解决二义性问题的方法有(使用作用域分辨操作符或虚基类)。

3.假设类X以类Y作为它的一个基类,并且X类的名字func支配Y类的名字func,obj为类X的对象,则obj.func语句实现的功能为【执行类X的func】。

4.多重继承的构造顺序可分为如下四步:这四个步骤的正确顺序是(1)所有非虚基类的构造函数按照他们被继承的顺序构造(2)所有虚基类的构造函数按照他们被继承的顺序构造(3)所有子对象的构造函数按照他们被继承的顺序构造(4)派生类自己的构造函数体,这四个步骤的正确顺序是【(2)(1)(3)(4)】。

5.带有基类的多层派生类构造函数的成员初始化列表中都要排出虚基类的构造函数,这样将对虚基类的子对象初始化(一次)。

第37讲 多态性

1.下列关于动态联编的描述中,错误的是(动态联编是在编译时确定操作函数的)。

2.要实现动态联编,必须通过(对象指针)调用虚函数。

3.对虚函数的调用(不一定使用动态联编)。

4.以下叙述正确的是(当基类的析构函数是虚函数时,它的派生类的析构函数也是虚函数)。

5.对虚函数使用对象指针或引用,系统使用(动态联编),对虚函数使用对象调用时,系统使用(静态联编)。

第38讲 虚函数

1.以下成员函数哪个表示纯虚函数【virtual void vf=0】。

2.关于虚函数的描述中,哪个是正确的(派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型)。

3.关于纯虚函数和抽象类的描述中,错误的是(一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类)。

4.关于抽象类,下列表述中正确的是【抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)】。

5.下列关于纯虚函数的描述中,正确的是(具有纯虚函数的类不能创建类对象)。

第39讲 运算符重载

1.下列有关运算符重载的描述中,哪个是正确的(运算符重载不改变其语法结构)。

2.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(作为成员函数重载的1元运算符)。

3.在下面的运算符重载函数的原型中,错误的是【volume operator-(double,double)】。

4.下列运算符中,哪个运算符在C++中不能重载(?:)。

5.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为【a.operator++】。

第40讲 典型运算符的重载

1.关于运算符重载,下列表述中正确的是(在类型转换函数的定义中不需要声明返回类型)。

2.‌重载输入流运算符>>必须使用的原型为【istream&operator>>(istream&,&)】。

3.哪个运算符既可以重载为一元运算符,又可重载为二元运算符(“*”)。

4.友元运算obj1>obj2被C++编译器解释为【operator>(obj1,obj2)】。

5.下列运算符不能重载为友元函数的是【= ->】。

第41讲 类模板

1.下列关于模板的叙述中,错误的是(类模板不能有数据成员)。

2.下列程序段中有错的是【func(Type a,b)】。

3.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用(class)关键字来修饰。

4.类模板的模板参数(只可作为数据成员的类型、只可作为成员的返回类型、只可作为成员函数的参数类型,D.以上三者均可)。

5.模板对类型的参数化提供了很好的支持,因此(类模板实例化时,编译器将根据给出的模板实参生成一个类)。

第42讲 标准库

1.下列关于C++流的说明中,正确的是(与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现)。

2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是(cout)。

3.out、cerr、clog是(ostream)的对象,cout处理标准输出,cerr和clog都处理标准出错信息。

4.在下面格式化命令的解释中,错误的是(ios::hex 转换基数为八进制形式)。

5.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(eof)。

第43讲 文件

1.在C++中,打开一个文件,就是将整个文件与一个(流)建立关联,关闭一个文件,就是取消这种关联。

2.下列打开文件的表达式中,错误的是【cout.open(“C:\\vc\\abc.txt”,ios::binary)】。

3.以下关于文件操作的叙述中,不正确的是(文件读写过程中,程序将直接与磁盘文件进行数据交换)。

4.语句ofstream f("SALARY.DAT",ios::noreplace | ios::binary); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且(若文件存在,打开失败;若文件不存在,建立一个新文件)。

5.执行语句序列ofstream outf(“SALARY.DAT”);if(...)cout

第47讲 异常处理

1.下列关于异常的叙述错误的是(编译错属于异常,可以抛出)。

2.下列叙述错误的是(throw的操作数值可以区别不同的异常)。

3.关于函数声明 float fthrow,下列叙述正确的是(表明函数不抛出任何类型异)。

4.下列叙述错误的是【catch(…)语句可以放在catch语句组的前面】。

5.下列程序运行结果为(AE)。

第48讲 命名空间

1.下面关于命名空间的说法,错误的是(一个命名空间对应多个命名作用域)。

2.要说明标识符是属于哪个命名空间时,需要在标识符和命名空间名字之间加上(::)。

3.下面关于namespace与class、struct、union、enum的区别描述正确的是:‌(1) namespace只能在全局范畴定义,但他们之间可以互相嵌套;‌(2)在namespace定义的末尾,右大括号的后面不必要跟一个分号;‌(3)一个namespace可以在多个头文件中定义,就好像重复定义一个类一样;多个定义中的函数或者类型合在一起构成整个namespace;‌(4)一个namespace可以用另一个名字来作为别名。‌(5)不能像类那样创建一个namespace的实例(全部)。

4.如果程序中使用了using命令同时引用了多个命名空间,并且命名空间中存在相同的函数,将出现(编译错误)。

5.如果在函数中定义的局部变量与命名空间中的变量同名时,(命名空间中的变量)被隐藏。

来源:开心豆豆长英语知识

相关推荐