在线考试系统c++题库填空题 联系客服

发布时间 : 星期三 文章在线考试系统c++题库填空题更新完毕开始阅读4fcafd4987c24028915fc3c7

二、填空题

1、设有定义语句:int a=12;,则表达式a*=2+3的运算结果是______。

答案: 60

根据运算的优先级和结合性,可以将表达式的计算顺序规则总结为以下3条:(1)优先计算带有括号的子表达式。(2)在没有括号的部分,依照运算优先级,由高到低进行计算。(3)具有相同优先级的运算符,按照结合性规定,依次进行计算。本题中*=的结合性是右结合,所以表达式a*=2+3相当于a=a*(2+3),所以a=60。 知识点:C++部分/数据类型、表达式和基本运算/掌握C++运算符的种类、运算优先级和结合性

2、从实现的角度划分,C++所支持的两种多态性分别是______时的多态性和运行时的多态性。 答案: 编译

在C++语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现的。运行时的多态性是通过虚函数体现的。 知识点:C++部分/了解多态性概念/虚函数机制的要点_

3、将一个函数声明为一个类的友元函数必须使用关键字______。 答案: friend

友元函数不是当前类的成员函数,而是独立于当前类的外部函数(包括普通函数和其他类的成员函数),但它可以访问该类的所有对象的成员,包括私有成员、保护成员和公有成员。友元函数要在类定义时声明,声明时要在其函数名前加上关键字friend。该声明可以放在公有部分,也可以放在私有部分。友元函数的定义既可以在类内部进行,也可以在类外部进行。

知识点:C++部分/熟练掌握类与对象的相关知识/友元函数和友元类_ 4、请按下面注释的提示,将类B的构造函数定义补充完整。 class A {

int a; public:

A(int aa=0){a=aa;} };

class B:public A{ int b; A c; public:

// 用aa初始化基类A,用aa+1初始化类对象成员c B(int aa):______ { b=aa+2; } };

答案: A(aa),c(aa+1)#c(aa+1),A(aa)

本题主要考查了类对基类及成员类的初始化。在类的构造函数中,要对类的基

1

类及成员类进行初始化,可在构造函数后面加上初始化列表,函数与初始化列表间用冒号隔开,列表间各项用逗号隔开。要对基类进行初始化,可用形如:类名(初始化参数)的方式,要对内部对象初始化,可用形如:对象名(初始化参数)的方式。

知识点:C++部分/熟练掌握类与对象的相关知识/构造函数与析构函数 5、下列程序的输出结果是______。

#include using namespace std; int main() {

int i=5;

int &r=i;r=7; cout<

} 答案: 7

本题主要考查了引用的概念,引用实质上是为变量取一个别名,因为系统不会为引用变量所代表的数据对象再次分配空间。本题中引用变量r与它所代表的数据对象i共用一个存储空间,所以所有对r的操作就是对i的操作,故本题在执行r=7后,i的值也就是7。

知识点:C++部分/C++的基本语句/掌握C++的基本语句 6、下列程序的输出结果是______。

#include using namespace std; class Test{ public:

Test(){cnt++;} ~Test(){cnt--;}

static int Count(){return cnt;} private:

static int cnt; };

int Test::cnt=0; int main() {

cout<

Test*pT3=new Test; Test*pT4=new Test;

cout<

2

delete pT3;

cout<

}

答案:0 4 2

本题主要考查了类的静态成员的概念。在C++中可以用static关键字为类指定静态成员。静态成员为类的所有实例所共享。对于类中的静态函数,可以通过类名::函数名的方法来调用,并且该函数只能访问类中的静态数据。对于静态int型数据,在编译时将会被初始化为0,故在main函数中第一句将会输出\;在Test t1,t2;语句中将创建类的两个实例,一共调用了两次构造函数,故类的静态数据cnt将会执行两次自加运算,变为2,main中接下来的两条语句通过new方法也创建了该类的两个实例,此时cnt变为4,故第二次执行输出时将输出\\;接下来执行了两条delete语句,将销毁pT4,pT3所对应的实例,这将执行两次析构函数,故cnt的值将变为2,最后的一条输出语句将输出\(后面有回车)。

知识点:C++部分/熟练掌握类与对象的相关知识/对象和对象指针的定义与使用 7、下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*…*2*1) unsigned fact(unsigned n) {

if(n<=1) return 1; return ______; }

答案:n*fact(n-1)#fact(n-1)*n

注意到阶乘的定义,当n<=1时,n!=1;当n>1时,n!=n*(n-1)!,符合递归的定义,因此,本题答案为n*fact(n-1)。

知识点:C++部分/掌握函数的有关使用/递归函数 8、下列程序的输出结果是______。

#include using namespace std; template

T fun(T a,T b) { return(a<=b)?a:b; } int main() {

cout<

答案: 3,3.14

本题主要考查了模板的定义及使用。在C++中为了能够实现代码的重用,提供了模板机制。在本题中,定义了一个模板函数,其参数a,b及返回结果均为T类型。分

3

析fun函数的可知,其功能是返回a,b中数值较小的数。在main函数中第一次调用fun时,实际上是调用了int fun(int a,int b)这个函数,故返回3,第二次调用时,实质上是调用了函数float fun(float a,float b),返回值为一个浮点型数据3.14。 知识点:C++部分/掌握函数的有关使用/函数重载

9、与成员访问表达式p->name等价的表达式是______。 答案: (*p).name

p->name实际上是批指针p所指结构的成员name,因此我们可以用*p来指定p所指的内容,其成员可用\操作符实现,故为(*p).name,注意到\的优先级要高于\,故对*p要加上括号。

知识点:C++部分/数据类型、表达式和基本运算/熟练掌握C++表达式类型及求值规则

10、下列程序的输出结果是______。

#include using namespace std; class base{ public:

int n;

base(int x) { n=x;}

virtual void set(int m) { n=m;cout<

};

class deriveA:public base{

public:

deriveA(int x):base(x){ }

void set(int m){ n+=m;cout<

class deriveB:public base{

public:

deriveB(int x):base(x){ }

void set(int m) { n+=m;cout<

int main() {

deriveA d1(1); deriveB d2(3); base *pbase; pbase=&d1; pbase->set(1); pbase=&d2; pbase->set(2); return 0; }

4