北语21春《C++》作业4[答案]答案
21春《C++》作业4
试卷总分:100 得分:100
一、单选题 (共 10 道试题,共 40 分)
1.如不希望函数返回任何值,则可以将函数的返回值定义为( )
A.int
B.0
C.void
D.return
正确答案:-----
2.在C++中,下列选项中是合法的八进制数的是
A.127
B.091
C.0x12
D.01011
正确答案:-----
3.对于int *pa[5];的描述,正确的是( )。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素
B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
C.pa[5]表示某个数组的第5个元素的值
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
正确答案:-----
4.在函数定义中的形参属于( )。
A.局部变量
B.全局变量
C.静态变量
D.寄存器变量
正确答案:-----
5.使用地址作为实参传给形参,下列说法正确的是( )。
A.实参是形参的备份
B.实参与形参无联系
C.实参与形参是同一对象
D.形参是实参的备份
正确答案:-----
6.在C++中,14%4的运算结果为( )
A.1
B.2
C.3
D.4
正确答案:-----
7.在while循环中使用( )语句可以立即跳出整个循环体。
A.continue
B.return
C.case
D.break
正确答案:-----
8.C++ 中不能用来组成循环结构的关键字是( )
A.for
B.while
C.switch
D.do
正确答案:-----
9.指针变量是用来存放( )的变量。
A.其他变量的值
B.其他变量的变量名
C.函数名
D.地址
正确答案:-----
10.说明语句在某一个类定义、函数定义或复合语句中的变量被称为( )
A.全局变量
B.局部变量
C.形式变量
D.实际变量
正确答案:-----
北语21春《C++》作业4[答案]多选题答案
二、多选题 (共 8 道试题,共 32 分)
11.C++语言中,下面的描述不正确的是( )
A.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
正确答案:-----
B.do-while语句构成的循环必须用break语句才能退出
正确答案:-----
C.不能使用do-while语句构成的循环
正确答案:-----
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
正确答案:-----
12.下列关于数组初始化的说法正确的是( )
A.若对数组a定义:"static int x[10];",则数组元素值均为0
B."int x[10]={1,2,3,4,5,6,7,8,9};"表示x[9]元素值为9
C.对于"int x[10];"它的元素初值是不确定的
D."int x[10]={1,2,3,4,5};"是不合法的,因为数组长度为10,而初始值仅有5个
正确答案:-----
正确答案:-----
13.若有定义: char *str[]={"one","two","three"},**p=str; 则可以表示出字符't'的表达是( )
A.*str+2
B.*str[2]
C.*(p+1)
D.**++p
正确答案:-----
14.以下为不合法的十六进制数是( )
A.0x2A
B.0x11Au
C.0X0
D.3A
正确答案:-----
15.下面哪些是C++标准I/O操作包含的类对象( )
A.cin
B.cerr
C.clog
D.cout
正确答案:-----
16.若有以下定义和语句: int w[2][3],(*pw)[3]; pw=w; 则对w数组元素合法引用是( )
A.pw[0][0]
B.*(pw[1]+2)
C.*(w[0]+2)
D.*(pw+1)[2]
正确答案:-----
17.下列关于数组初始化的说法正确的是( )
A.若对数组a定义:"static int x[10];",则数组元素值均为0
B."int x[10]={1,2,3,4,5,6,7,8,9};"表示x[9]元素值为9
C.对于"int x[10];"它的元素初值是不确定的
D."int x[10]={1,2,3,4,5};"是不合法的,因为数组长度为10,而初始值仅有5个
21.已知x,y,z是整型变量,则下列选项中正确的是( )
A.if (x&&y) cout<<"x&&y"
B.if (x=y) cout<<"x=y"
C.if (x#y) cout<<"x#y"
D.if(x<>y) cout<<"x<>y"
正确答案:-----
三、判断题 (共 7 道试题,共 28 分)
19.结构体的默认访问权限为public,而类中的默认访问权限为protected。
正确答案:-----
20.C++中的注释可以帮助读者阅读源程序,但并不参与程序的运行。
21.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
22.编译错误属于异常,可以抛出。
23.返回值类型、参数个数和类型都相同的函数也可以重载。
24.C++是最开始提出类概念的语言
25.指针指向的内存地址可以改变,与之类似,引用指向的变量也可以改变。
北语21春《C++》作业4[答案]历年参考题目如下:
地大《面向对象程序设计(新)》在线作业一-0008
试卷总分:100 得分:100
一、单选题 (共 15 道试题,共 60 分)
1.有如下定义:int a[5]={1,3,5,7,9},*p=a;下列表达式中不能得到数值5 的是()
A.*p+4
B.*(p+2)
C.a[3]
D.a[2]
2.设int * p2=&x,* p1=a;p2= *b;则a和b的类型分别是()
A.int 和int *
B.int * 和int **
C.int * 和int *
D.int * 和int
3.下列关于虚基类的描述,错误的是()
A.设置虚基类的目的是为了消除二义性
B.虚基类的构造函数在非虚基类之后调用
C.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
D.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
4.有如下类声明:class Base{protected;int amount;public;Base(int n=0): amount(n){}int getAmount()const { retum amount; }};class Derived: public Base {protected;int value;public;Derived(int m, int n): value(m). Base(n){}Int getData()const{ return value+amount; }};已知
A.x.value+ x.getAmount()
B.x.value+x.amount
C.x.getData()-x.gctAmount()
D.x.getData()-x.amount
5.下面是一个模板声明的开始部分:templute<typename T> double __由此可知()
A.这肯定是一个错误的模板声明
B.这既可能是一个函数模板的声明,也可能是一个类模板的声明
C.这可能是一个类模板的声明
D.这可能是一个函数模板的声明
6.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()
A.虚函数
B.析构函数
C.构造函数
D.友元函数
7.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()
A.operator+(AB a)
B.AB operator+(AB & a , AB & b)
C.AB operator+(AB & a)
D.AB & operator+( )
8.类的析构函数的作用是()
A.类的初始化
B.对象的初始化
C.删除类创建的对象
D.一般成员函数的初始化
9.设int f(int);和int g(int);是函数f和g的原形,以下将f作为语句调用的是()
A.p= f(g(3)+1);
B.g(f(3)+2);
C.g(f(3));
D.f(g(3));
10.有如下程序: #include class BASE{ char c; public: BASE(char n):c(n){} virtual~BASE(){cout<<C;} }; class DERIVED:public BASE{ char c; public: DERIVED(char n):BASE(n+1),c(n){} ~DERIVED(){cout
A.YX
B.Y
C.XY
D.X
11.下面描述中,表达错误的是()
A.私有继承时基类中的public成员在派生类中是private的
B.公有继承是基类中的private成员在派生类中仍是private的
C.公有继承时基类中的public成员在派生类中仍是public的
D.公有继承时基类中的protected成员在派生类中仍是protected的
12.对于全局函数 int f(void) ,与其完全等价的函数原型为()
A.int f(void ) const;
B.int& f( );
C.const int f( );
D.B、C都不是
13.类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的()
A.TN& a;
B.TN a;
C.TM* a;
D.TM a;
14.在C++语言中,数据封装要解决的问题是()
A.防止不同模块之间数据的非法访问
B.避免数据丢失
C.数据的规范化
D.便于数据转换
15.已知Value 是一个类,Value 是Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是()
A.Value operator+(Value v=value, int i=0);
B.Value operator+(Value v=value, int i);
C.Value operator+(Value vint i=0);
D.Value operator+(Value v, int i);
二、多选题 (共 5 道试题,共 20 分)
16.赋值运算符重载函数与拷贝构造函数的区别是什么()
A.都是拷贝一个类的对象给另一个同类型的类的对象
B.赋值运算符重载函数要把一个已存在对象的各成员的当前值赋给另一个已存在的同类对象
C.拷贝构造函数是用已存在的对象的各成员的当前值来创建一个相同的新对象
17.关于构造函数说法正确的是()
A.返回类型可以是任意的
B.在对象创建时自动调用
C.参数个数和类型可以是任意的
D.函数名只能是类名
18.下列有关抽象类和纯虚函数的叙述中,错误的是()
A.纯虚函数都不能有函数体
B.纯虚函数的声明以“=0;”结束
C.拥有纯虚函数的类是抽象类,能用来定义对象
D.抽象类的派生类若不实现纯虚函数,它也是抽象类
19.以下哪些是面向对象程序设计的特征( )
A.继承
B.抽象
C.封装
D.多态
20.关于公共静态数据成员,下面说法正确的是()
A.需要在类体外初始化
B.跟某个具体对象无关
C.在main函数之前创建
D.可以用类名和成员名直接访问
三、判断题 (共 5 道试题,共 20 分)
21.多态的实现分为两类:编译时的多态和运行时的多态
22.默认的继承方式是private
23.友元函数的声明不受访问区域的影响
24.设int * p;则可以定义表达式 --++p
25.静态成员变量所有的对象拥有一份拷贝