版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
家二级(C++)笔试模拟试卷11(共9
套)
(共405题)
家二级(C++)笔试模拟试卷第1套
一、填空题(本题共14题,每题1.0分,共14分。)
1、的任务是诊断和改正程序中的错误
标准答案:或程序调试(阶段)或软件调试(阶段)或Debug(阶段)
知识点解析:软件测试的目的是发现程序中的错误,而调试的目的是确定程序中错
误的位置和引起错误的原因,并加以改正。换句话说,调试的目的就是诊断和改正
程序中的错误。调试不是测试,但是它总是发生在测试之后。因此,本题的正确答
案是调试(阶段)或程序调试(阶段)或软件调试(阶段)或Debug(阶段)
2、一个关系表的行称为。
标准答案:记录或元组
知识点解析:关系是关系数据模型的核心。关系可以用一个表来直观地表示,表的
每一列表示关系的一个属性,每一行表示一个元组或记录。因此,本题的正确答案
是元组或记录。
3、按“先进后出”原则组织数据的数据结构是_____o
标准答案:栈或Stack
知识点解析:栈和队列是两种特殊的线性表,其特殊性在于对它们的操作只能在表
的端点进行。栈中的数裾按照后进先出的原则进行组织,而队列中的数据按照先进
先出的原则进行组织。因此,本题的正确答案是栈(stack)。
4、数据结构分为线性结构和非线性结构,带链的队列属于。
标准答案:线性结构
知识点解析:数据结构分为线性结构和北线性结构,其中队列是属于线性结构。队
列有两种存储结构:一种是顺序存储结构,称为顺序队列;另一种是链式存储结
构,称为链队列。题目中所说的带链的队列就是指链队列。无论队列采取哪种存储
结构,其本质还是队列,还属于一种线性结构。因此,本题的正确答案是线性结
构。
5、若有定义语句:int*a,b;,则变量b的数据类型是o
标准答案:int
知识点解析:缺数据类型。
6、已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标
为i-1的单元,其中例如,当n=4,a中原有数据为1、2、3、4时,则移
动后a中元素为2、3、4、4o请将语句补充完整:for(inti=0;i<n-l;
i++)a|i]=a。
标准答案:a[i+l]
知识点解析:实现由后面一个数组元素将前一个数组元素进行覆盖,故应该为
a[i]=a[i+l]0
7、已知递归函数f的定义如下:intf(intn){if(nV=l)retum1;〃递归结束:情况
f5=5*f3=5*3*f1elsereturnn*f(n-2);〃递归}则函数调用语句f(5)的返回值是
标准答案:15
知识点解析:函数递归调用,f(5)=5*f(3)=5*(3*f(l))=15°
8、创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式
给出数组元素的初值,则调用默认构造函数,下列程序涉及对象数组的创建和单个
对象的创建,其输出结果是o#include<iostream>usingnamespacestd;
classFoo{public:Foo(intx){eout<<,A,;)Foo(){)};intmain(){Foof[3],
g(3);return0;
标准答案:A
知识点解析:数组f[3]调用的是无参构造函数,而g(3)调用的是第一个有参构造函
数,故打印A。
9、已知下列程序的输出结果是42,请将下画线处缺失的部分补充完整。include
<iostream>usingnamespacestd;classFoo{intvalue;public:Foo():value(0){)
voidsetValue(intvalue){=value;}〃给Foo的数据成员value赋值void
print())eout<<value;));intmain(){Foof;f.setValue(42);f.print();return
0;}
标准答案:this.value
知识点解析:为类的数据成员赋值,将从形参传递来的实参赋值给类数据成员,为
区分名字可以使用ihis指针
10、有如下程序:#include<iostream>usingnamespaeestd;classONE{public:
virtualvoidf()(cout<<*'1M;));classTWO;publicONE[public;TWO()1cout
<<"2";}{;classTHREE:publicTWO{public:virtualvoidf()}TWO::f();
cout<<"3";)};intmain(){ONEaa,*P;TWObb;THREEcc:P=&cc;p-
>f();return0;)程序的输出结果是。
标准答案:2213
知识点解析:TWObb;调用TWO的构造函数打印2;THREEcc;调用继承类
TWO的构造函数打印2;p->f():调用类TREE的函数f(),先显式调用TWO类
的函数f(),TWO中没有重新定义f()函数,所以调用TWO的基类ONE的虚函数
f();打印1,然后再打印3,故答案为2213。
11、有如下程序:#include<iostream>usingnamespacestd:class
PARENT{public:PARENT(){cout<<"PARENT";}};classSON:public
PARENT{public:SON(){coul<<"SON";){;intmain(){SONson;
PARENT*?:P=&son;return0:)程序的输出结果是。
标准答案:EAREN1SON
知识点解析:在有继承关系的类对象构造时,先执行基类的构造函数,然后执行派
生类的构造函数。所以先执行PARENT的构造函数,然后执行SON的构造函数。
12、若以非成员函数形式,为类Bounce重载“!”运算符,其操作结果为一个bool型
数据,则该运算符重载函数的原型是o
标准答案:booloperator!(Bounee);
知识点解析:单目运算符重载为非成员函数的一般格式为:返回类型。pcrator操
作符(形参)其中形参类型为类名。
13、下面是复数类complex的定义,其中重载的运算符的功能是返回一个新的
复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之
和;请补充完整。classcomplex)doublereal;〃实部doubleimag;〃虚部public:
complex(doubler,doublei):real(r),imag(i)j)complexoperator+(complexA){return
complex();}};
标准答案:real+a.real?imag+a.imag
知识点解析:为复数类complex以成员函数重载运算符,虚部与虚部相加,实
部与实部相加,并返回为complex类。
14、已知一个函数模板定义为template<typenameTl.lypenaineT2>TlFUN(T2
n){returnn*5.0;}若要求以int型数据7为函数实参调用该模板函数,并返回一个
double型数据,则该调用应表示为o
标准答案:FUN<double>(7)
知识点解析:实参类型和返回值类型不匹配时,需要强制转换参数类型,所以在函
数模板调用时要显式地定义参数数据类型double,将整数7转换为double型。
二、填空题(含2小题)(本题共3题,每题7.0分,
共3分。)
15、在下面函数的画线处填上适当的内容,使该函数能够利用递归方法求解字符串
str的长度(不得使用系统提供的字符串处理函数)。int
GetLen(char*str){if((6))return(7);elsereturnl+GetLen(str+l);(
知识点解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,
因此,数据的逻辑结构与存储结构不一定是一一对应的。选项A中的说法是错误
的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据
需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来
说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点
在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的
前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结
构。选项B中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结
构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性
结构,实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。
选项C中的说法也是错误的。
2、在设计程序时,应采纳的原则之一是
A、不限制got。语句的使用
B、减少或取消注解行
C、程序越短越好
D、程序结构应有助于读者理解
标准答案:D
知火点解析:滥用goi。语句将使程序流程无规律,可读性差,囚此A不选;注解
行有利于对程序的理解,不应减少或取消,B也不选;程序的长短要依照实际情况
而论,而不是越短越好,C也不选。
3、下列叙述中正确的是()。
A、线性链表的各元素在存储空间中的位置必须是连续的
B、线性链表的头元素一定存储在其他元素的前面
C、线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存
储在其他元素的前面
D、线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存悌顺
序也是任意的
标准答案:D
知识点解析:在线性链表中,各元素在存储空间中的位置是任意的,各元素的顺
序也是任意的,依靠指针来实现数据元素的前后件关系。
4、下列选项中不属于软件生命周期开发阶段任务的是()。
A、软件测试
B、概要设计
C、软件维护
D、详细设计
标准答案:C
知识点3析:软件的生命周期可分为软件定义、软件开发及软件运行维护三个阶
段。其中软件定义阶段的主要工作有可行性研究与计划制订和需求分析等;软件开
发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作
是软件的运行及后期的维护等。
A、ABCDEF
B、DBEAFC
C、ABDECF
D、DEBFCA
标准答案:8
知识点解析:暂无解析
6、在长度为n的顺序表的第i(lgiWn+l)个位置上插入一个元素,元素的移动次数
为O
A、n-i11
B、n-i
C、i
D、i-1
标准答案:1
知识点解析:暂无解析
7、数据处理的最小单位是
A、数据
B、数据元素
C、数据项
D、数据结构
标准答案:4
知识点解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据
是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相
互关系和数据运算。故正确答案为选项C)。
8、用链表表示线性表的优点是
A、便于随机存取
B、花费的存储空间较顺序存储少
C、便于插入和删除操作
D、数据元素的物理顺序与逻辑顺序相同
标准答案:4
知识点解析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申
请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
故链式存储结构下的线性表便于插入和删除操作。
9、数据字典(DD)是定义以下哪种系统描述工具中的数据的工具()。
A、数据流程图
B、系统流程图
C、程序流程图
D、软件结构图
标准答案:1
知识点解析:本题考查数据字典的作用,数据字典是对数据流程图中出现的被命名
的图形元素的确切解释。
10、在单链表中,增加头结点的目的是
A、方便运算的实现
B、使单链表至少有一个结点
C、标识表结点中首结点的位置
D、说明单链表是线性表的链式存储实现
标准答案:1
知识点解析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)
的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于
运算的实现。
二、选择题(本题共25题,每题1.0分,共25分。)
11、有以下程序:#include<iostream>#include<math>usingnamespacestd;class
point{private:doublex;doubley;public:point(doublea,doubleb{x=a;y=b;friend
doubledistance(pointa,pointb;};doubledistance(pointa,pointbreturnsqrt((a.x-b.
x)*(a.x-b.x)+(a.x-b.x)*(a.x-b.x));)intmain(){pointpl(1,2);pointp2(5,2);cout<
<distance(pl,p2)<<end1;return0;)程序运行后防输出结果是
A、1
B、5
C、4
D、6
标准答案:c
知识点解析:本题考核友元函数的应用。分析程序:类point中定义了两个私有成
员x和y,以及一个友元函数distance。从而,函数distance可以访问类point中的
任何成员o在函数distance中,返回值为sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-
b.y))o由此可知,函数distance的功能是计算a、b两点之间的距离。在主函数
main中,先定义两点:pl(l,2)和p2(5,2)。然后调用函数distance计算两点之旬的
距离为4,所以程序最后输出为4。
12、关于const修饰符的说法中,错误的是
A^const既可以修饰成员函数,也可以修饰数据成员,还可以修饰对象
B、若const修饰了一个对象,则该对象中的所有数据成员都无法被更新
C、常对象无法调用一般成员函数
D、常成员函数只能被常对象调用,不能被一般对象调用
标准答案:D
知识点解析:本题考察consi修饰符的含义及其修饰不同对象的规则。常成员函数
既能被常对象调用,也能被一般对象调用,一旦const修饰了一个对象,则对象的
所有数据成员都无法更新。
13、以下选项中合法的实型常数是
A、5E2.0
B、E-3
C、.2E0
D、1.3E
标准答案:C
知识点解析:本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必
须为整数,故排除A。由于符号E前面必须有数字,故B也是错误的。D在指数
符号后面没有数字,是错误的。答案为C。
14、为了避免嵌套的if...else语句的二义性,C++规定与else配对的是
A、缩排位置相同的if
B、在其之前未配对的if
C、在其之前未配对的最近的if
D、同一行上的if
标准答案:C
知识点解析:C++规定else总是与之前未配对的最近的if进行配对,这样可以避免
二义件.也便于编译器分析c
15、类的析构函数的作用是()。
A、一般成员函数
B、类的初始化
C、对象的初始化
D、删除对象
标准答案:8
知识点解析:类的析构函数是在类的对象被释放的时候自动调用,它的作用是删除
己经创建完成的对象。
16、类的析构函数的作用是。
A、一般成员函数
B、类的初始化
C、对象的初始化
D、删除对象创建的所有对象
标准答案:8
知识点解析:暂无解析
17、执行卜歹U程序intfun(intxl,intx2){intx;xl>x2?(x=3):(x=4);return
x+xl;}voidmain(){cout<<fun(7,8);}后输出结果是。
A、9
B、10
C、11
D、12
标准答案:4
知识点解析:暂无解析
18、下列关于运算符重载不正确的是
A、运算符重我不能改变运算符的操作数个数
B、运算符重载不能改变运算符的优先级
C、运算符重载不能改变运算符的结合性
D、运算符重载能改变对预定义类型数据的操作方式
标准答案:8
知识点解析:运算符重载的规则是重载时不能改变运算符的操作数个数,不能改变
运算符的优先级,不能改变运算符的结合性,不能改变对预定义类型数据的操作方
式。注意:运算符重载的关键字是operator。
19、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是
A、派生类的对象可以赋给基类的对象
B、派生类的对象可以初始化基类的引用
C、派生类的对象可以直接访问基类中的成员
D、派生类的对象的地址可以赋给指向基类的指针
标准答案:4
知识点解析:友元函数的定义既可以在类内部进行,也可以在类外部进行。它提高
了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成员函数可以访问
类的私有成员。
20若已定义:inta[]={0,1,2,3,4,5,6,7,8,9),*p=a,i;其中0SiS9,
则对a数组元素不正确的引用是
A、a[p—a]
B、*(&a|i])
C、p[i]
D、a[10]
标准答案:8
知识点解析:通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,
如的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标
是从。开始的。
21、C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是
A、增加了一些新的运算符
B、允许函数重载,并允许设置缺省参数
C、规定函数说明符必须用原型
D、引进了类和对象的概念
标准答案:8
知识点解析:C++语言最重要的特点是其为一种面向对象的程序设计语言,但是
C++语言也包含了全部的C语言的特征。
22、不能作为函数重载的判断依据的是
A、const
B、返回类型
C、参数个数
D、参数类型
标准答案:2
知识点解析:本题考核函数重载。所谓函数重载,是指同一个函数名可以对应多个
函数的实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上
不同。即重载函数不许具有相同的形参列表。函数的返回类型不能作为函数重载的
判断依据。const是函数的一部分参与函数的重载
23、按照标识符的要求,下列选项中,()符号不能组成标识符。
A、连接符
B、下划线
C、大小写字母
D、数字字符
标准答案:1
知识点解析:本题考核C++的标识符定义。C++规定标识符由大小写字母、数字字
符(0〜9)和下划线组成,并且以字母或下划线开始,后跟。个或多个字母、数字字
符或下划线。由此可知A)选项中的连接符不能用于组成标识符。
24、有以下程序:#include<iostrearn>usingnamespacestd;classsample
{private:intx;staticinty;public:sample(intA):staticvoidprint(sample
s);};sample::sample(intA){x=a;y+=x;)
A、x=10,y=20
B、x=20,y=30
C、x=30,y=20
D、x=30,y=30
标准答案:2
知识点解析:本题考核静态数据成员和静态成员函数的应用。类sample中定义两
个私有成员x和y,其中y为静态数据成员。并定义函数print。为静态成员函数。
在主函数中,定义对象sl(10)时,通过构造函数使对象si的私有成员x=10,静态
数据成员y=10。定义s2(20)时,通过构造函数使对象s2的私有成员x=20,静态数
据成员y=l0+20=30o程序最后调用静态成员函数print输出对象s2的私有成员x
的值20,对象si、s2共享的静态数据成员y的值30。
25、若有如下程序:#include<iostream>usingnamespacesstd;ints=O;class
sample{staticintn;public:sample(inti){n=i;}staticvoidadd(){s+=n;));int
sample::s=O;intmain(){samplea(2),b(5);sample::add();coui<<s<<encll;return
0;)程序运行后的输出结果是
A、2
B、5
C、7
D、3
标准答案:
知识之解析2:本题考核静态数据成员和静态成员函数的应用。程序中定义一个类
sample,它包括一个静态数据成员n和一个静态成员函数add,并在类的构造函数
中给类私有静态数据成员n赋值。在主函数main中,定义对象a(2)时,通过构造
函数使静态数据成员n的值变为2,在定义对象b(5)时,通过构造函数使静态数据
成员n=5(覆盖了前面的n=2),再执行sample::add()使全局变量s=5o
26若有以下程序:#include<iostream>usingnamespacestd;intmain(){inta[4]
[4|={{1,2,3,-4},{0,・12,・13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;for(i=0;i<
4;i++){for(j=O;j<4;j++){if(a[i][j]>=0)continue;s+=a[i][j];)}cout<<s<<
end1;return0;)执行后的输出结果是()。
A、-138
B、141
C、75
D、-1
标准答案:1
知识点解析:本题属于综合题,考查多个方面的知识点。程序首先定义了一个二维
数组a,并初始化其值。在内层for循环体中,遇到大于等于0的数,就继续执行
下次循环,否则就执行"s+=a[i][j『,即把其值累加并保存在变量s中。所以本题双
重循环的功能是:计算数组中所有负数的累加和,即s=-138。
27、下列叙述中,正确的是()。
A、while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用while语句构成的循环,只有在while后的表达式为非0时才执行循环
D^do-while语句构成的循环,只有在while后的表达式为0时才结束循环
标准答案:4
知识点解析:本题考核对do-while语句、while语句基本语法的掌握。选项A中,
while语句构成的循环体可由其他语句构成的循环体代替,所以选项A不正确c选
项B中,do-while语句构成的循环,当while的条件表达式的值为。时,也可结束
循环,所以选项B也不正确。选项C是正确的。选项D可参照选项B,当使用
break语句时,也可退出循环。故选项D也不正确。
28、一个类的友元函数或友元类可以通过成员操作符访问该类的()。
A、私有成员
B、保护成员
C、公有成员
D、所有成员
标准答案:8
知识点解析:在C++中,如果想让类中的成员数据可以被其他函数访问,可以通
过友元函数声明来分享类中的资源。除了友元函数外,还有友元类。类的友元函数
对类的属性和方法的访问能力等同于类的成员函数。
29、在inta=10,*p=&a;语句中,p的值是()。
A、10
B、变量p的地址
C、变量a的地址
D、随机数
标准答案:4
知识点解析:暂无解析
30、下列是重载乘法运算符的函数原型声明,其中错误的是()。
A^MyClassoperator*!double,double);
B、MyClassopcrator*(double,MyClass);
C^MyClassoperator*(MyClass,double);
D、MyClassoperator*(MyClass,MyClass);
标准答案:A
知识点解析:此题考查的是乘法运算符的重载函数原型声明。因为操作的对象是类
对象,所以重载函数的参数至少有一个是类对象。故选项A)中两个参数都为
double型是错误的。
31、下面说法正确的是
A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C、类的内联函数必须在类体内定义
D、类的内联函数必须在类体外通过加关键字inline定义
标准答案:B
知识点解析:内联函数用inline修饰,用于取代C语言中的宏定义。Inline是个建
议机制而不是强制机制,也就是说,程序员可以指定任意函数为inline函数,但是
编译器会根据系统情况来决定是否将其inline处理c对于较大的函数,编译器往往
会取消其inline特性。Inline:函数的特点之一就是执行速度快,他实质是在编译
时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场
等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处
理,在类体外定义的成员函数,如果用inline修饰,编译器也认为是一种内联建
议。
32、当要求两个变量不能同名时,它是指在()的情况下。
A、同一文件中
B、同一作用域中
C、同一类的不同成员函数中
D、不同函数中
标准答案:B
知识点解析:在同一作用域中,两个变量不能够重名。
33、下列是模板声明的开始部分,其中正确的是
A^template<T>
B、template<classT1,T2>
C、template<classTl,classT2>
D、template<classTl;classT2>
标准答案:c
知识点谒析:本题考核模板的声明。模板声明的开始部分为:templateV类型形参
表其中,V类型形参表〉可以包含基本数据类型,也可以包含类类型。类型形
参需要加前缀class。如果类型形参多于一个,则每个类型形参都要使用class。形
参表中的参数是惟一的,而且至少在函数定义体中出现厂次。形参表中至少有一个
形参的类型必须用V类型形参表》中的形参来定义。所以只有C选项的声明是正
确的。
34、有如下程序:#include<iostream>usingnamespacestd;
intmain(){voidfunction(doubleval);
doubleval;function(val);cout<<val;
return0:)voidfunction(doubleval)
{val=3;)编译运行这个程序将出现的情况是
A、编译出错,无法运行
B、输出:3
C、输出:3.0
D、输出一个不确定的数
标准答案:D
知识点解析:本题考查的是函数参数的传递。在C++中,函数在传递参数时,总
是将实参值的副本传递(拷贝)给被调用函数的形参,即传值调用。因此,在函数中
对形参所作的任何操作都不会改变函数外的实参。故木题function。函数不会对主
函数中的val变量造成任何改变,val也没有被初始化,所以输出的是一个不确定
的值:故应该选择D。
35、在类声明中,紧跟在“public:"后声明的成员的访问权限是()。
A、私有
B、公有
C、保护
D、默认
标准答案:B
知识点解析:此题考查的是类的访问权限。在C++语言中,类的访问权限有公有
(public)、保护(protect)和私有(private)3种。
三、公共基础填空题(本题共5题,每题7.0分,共5
分。)
36、问题处理方案的正确而完整的描述称为o
标准答案:算法
知识点解析:暂无解析
37、诊断和改正程序中错误的工作通常称为。
标准答案:程序调试
知识点解析:暂无解析
38、有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout
<<"A";));classB:privateA{public:B(){cout<<,B,;}};intmain(){Aa;Bb;return
0;}这个程序的输出结果是o
标准答案:AAB
知识点解析:暂无解析
39、下面是一个递归函数,其功能是使数组中的元素反序排列,请将函数补充完
整。voidreverse(inl*a,intsize){if(size<2)relurn;intk=a[0|;a[0]=a[size-l];
a[size-l]=k;reverse(a+l.);)
标准答案:size-2
知识点解析:函数体的基本功能是将大小为si,ze的数组a的首尾元素进行交换。
交换一次后,未交换部分的首元素地址为a+1,未交换的元素个数为size-2。
40,C++是一种面向对象的程序设计语言,它充分支持面向对象思想中的三个主要
特征是性;性和性。
标准答案:封装、继承、多态
知识点解析:暂无解析
四、填空题(本题共10题,每题1.0分,共10分。)
41、已知递归函数f的定义如下:intf(intn){if(n<=l)return1;〃递归结束情况
elsereturnn*f(n-2);〃递归)则函数调用语句f(5)的返回值是。
标准答案:15
知识点解析:此题考查的是递归算法。本题中f()函数在n小于等于1时返回值为
1,其余情况返回值为n*(n-2),由此分析可以得到
f(5)=5*f(3)=5*3*f(l)=5*3*l=15o
42、在下列的程序的横线处填上适当的语句,使该程序的输出为12。#inckide<
iostream.h>usingnamespacestd;classBase{public:inta,b;Base(inti){a=
i;));classDerived:publicBase{inta;public:Derived(intx):Base(x),
b(x+1){);voidshow()(
标准答案:eout<<Base::a。
知识点解析:本题考查的是基类和派生类的构造至数。派生类构造函数的执行顺
序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子
对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的
内容。本题要求结果是输出12,分析题目,首先调用基类的构造函数,然后是调
用子对象的构造函数,横线处要求输出基类成员a的值,填入toutV〈Base::a
即可。
43、下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶
元素。栈初始为空,top值为0,栈顶元素在stack[lop-l]中,在下面横线处填上适
当语句,完成栈类模板的定义。templateclassTstack{enum{size=l000};T
stackfsize];inttop;public:Tstack():top(0){)voidpush(constT&i){if(top
标准答案:Stack[-top]或slack[top-=l]或stack[top=top-l]
知识点解析:此题考查的是堆栈数据结构。分析题目,首先利用函数
voidpush(consa&i)将i压入栈,然后Tpop()将元素弹出,但由于在压入栈的时
候,top值已经增加1;要弹出元素,须使top先减1,才能把栈顶元素弹出。
44、执行下列程序后的瑜出结果是o#includeusingnamespacestd;int
main(){intx=3;int&y=x;y++;cout<
标准答案:4
知识点解析:C++程序中的引用实际上是为变量起个别名,其后的任何操作都相当
于对原变量的操作。所以最后输出4。
45、在下面程序的横线处填上适当的语句,使程序执行后的输出结果为ABCD。
#includeusingnamespacestd;classA{public:A(){cout«tA\)};class
B={public:B(){cout«<B,;)};classC:{public:
C(){cout«tC,;}}:classD:publicB,publicC{public:D(){ctout«tD,;)};
voidmain(){Dobj;}
标准答案:vinualA或vinualpublicA或virtualprivaleA或virtualprotrctedA与
virtualA或virtualpublicA或virtualprivateA或virtualprotectedA
知识点解析:由于每执行一次A类的构造函数,都将输出一个字符A,输出结果
中只有一个A,且第一个输出为A,D继承B,可知必有B继承A。由题中要求c
肯定继承某个类,所以,这里的C只能是继承于A,保证输出中只有一个A,A必
须为虚基类,所以本题中的空都填vmalA。
46、表达式x.operator++()还可写成。
标准答案:++x
知识点解析:C++语言中用成员函数重载++x为x.operator++()用及元函数重载++x
为:operator++(x)(>
47>下面程序的输出结果是[]o#include<iostream.h>intadd(inta,intb);void
main(){externintx,y;cout<<add(x,y)<<endl;)intx(20),y(5);intadd(inta,intb)
{ints=a+b;returns;}
标准答案:25
知识点解析:暂无解析
48、下列程序段的输出结果是【】。cout<<fixed<<509.123456789<<
endl;
标准答案:123457
知识点解析:fixed的意义是在小数点后保留六位,所以fixed输出为509.123457。
49、下面程序输出的结果是[】。#include<iostream>usingnamespacestd;
classA{public:virtualvoidshow(){cout<<"A!M;}:classB:publicA{public:void
show(){cout<<};classC:publicB{public:voidshow(){cout<<nC!n;|!;
voidshow_info(A&i){i.show();)voidmain(){Aia;Bib;Cic;
show_info(ia);show_inIoiib);shovv_info(ic);)
标准咨案;A!A!A!
知识点解析:由于基类中没有声明虚函数,故调用的全部是基类的函数。
50、已知数组a中有n个元素,下列语句将数组a中从下标xl开始的k个元素移
动到从下标x2开始的k个元素中,其中OV=xlVx2Vn,x2+k<n,请将下列语句
补充完整。For(inti=x1+k-1;i>=x1;i—)a[|=a|i];
标准答案:X2+k-l
知识点解析:此题考查的是数组的操作。a[”表示从下标xl开始的第i个元素,若
为第一次循环,贝Ui为xl+k-1,按照题目将数组a中从下标xl开始的k个元素移动
到从下标x2开始的k个元素中的要求,所以将a[i]赋值给下标为X2+k-l的元素。
家二级(C++)笔试模拟试卷第3套
一、公共基础选择题(本题共10题,每题7.0分,共
10分。)
1、下列叙述中正确的是
A、所有形态的二叉树都只能采用链式存储结构
B、循环队列是队列的一种存储方式
C、栈只能采用顺序存储结构
D、循环队列与循环链表都属于链式存储结构
标准答案:B
知识点解析:一般来说,二叉树采用链式存储结构,但由于完全二叉树的特点,采
用顺序存储也能方便地访问其中的每一个元素。因此,选项A中的说法是不对
的。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻
辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位
理已被使用而再要进行人队运算时,只要存储空间的第一个位置空闲,便可将元素
加入到第一个位置,即将存储空间的第一个位置作为队尾。因此,循环队列是队列
的一种顺序存储方式,选项B中的说法是正确的。栈是特殊的线性表,它既能采
用顺序存储结构,又能采用链式存储结构。因此,选项C中的说法也是不对的。
前面说过,循环队列是队列的一种顺序存储方式,不属于链式存储结构。因此,选
项D中的说法也是不对的。
2、下列叙述中正确的是
A、软件测试的主要目的是确定程序中错误的位置
B、软件调试的主要RI的是发现程序中错误的类型
C、程序经调试后还应进行测试
D、软件的测试与调试工作最好都由程序编制者来完成
标准答案:C
知识点解析;软件测试的口标是在精心控制的环境下执行程序,以发现程序中的借
误,给出程序可靠性的鉴定。测试不是为了证明程序是正确的,而是在设想程序有
错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。由于测试的这一特
征,一般应当避免由开发者测试自己的程序。测试只能说明程序有错,而不能证明
程序无错,希望通过有限次的测试就能发现程序中的所有错误是不可能的,即完全
测试是不可能的。因此,选项A与D中的说法都是错误的。调试也称排错。①测
试的目的是暴露错误,而调试的目的是发现错误的位置,并改正错误。②经测试
发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测
试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。因此,选项B
中的说法也是错误的,而选项C中的说法是正确的。
3、面向对象的开发方法中,类与对象的关系是
A、具体与抽象
B、抽象与具体
C、整体与部分
D、部分与整体
标准答案:B
知识点解析:现实世界中的很多事件都具有相似的性质,把几个有相似的属性的操
作的对象归为类,也就是说类是具有共同属性、共同方法的对象的集合,是对对象
的抽象,它描述了该对象类型的所有对象的性质,而一个对象则是其对应类的一个
具体实例。所以本题正确答案为B。
4、在深度为6的满二叉树中,叶子结点的个数为
A、64
B、63
C、32
D、31
标准答案:C
知识点解析:二叉树有一个性质:在二叉树的第k层上,最多有2k-l(kNl)个给
点。对于满二叉树来说,最后一层上的叶子结点数正好达到最大值。因此,深度为
6的满二叉树中,叶子结点的个数即是第6层上结点数的最大值,为2匕匕26/二32
5、下列数据结构中按“先进先出”原则组织数据的是
A、线性表
B、循环队列
C、循环链表
D、双向链表
标准答案:B
知识点解析:队列是按“先进先出”原则组织数据的,而循环队列只是队列的一种存
储形式。因此,循环队列是按“先进先出”原则组织数据的。
6、将7个数据进行插入排序,在最坏情况下需要比较的次数是
A、42
B、6
C、7
D、21
标准答案:D
知识点解析:对长度为n的线性表进行插入排序,在最坏情况下需要n(n-l)/2次比
较,现线性表的长度为7,在最坏情况下需要比较的次数为7(7-1)/2=21。
C
AD
7、设有如图所示的二叉树四则对该二叉树前序遍历的结
果是
A、FCADBEG
B、ACBDFGE
C、ABDCGEF
D、ACBDFEG
标准答案:A
知识点解析♦:按照二义棚前序遍历的方法:在访问根结点、遍历左子树与遍历右子
树这三者中,首先访问艰结点,然后遍历左子树,最后遍历右子树;并且,在遍历
左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。对本题中
的二叉树进行前序遍历的结果应是FCADBEGo
8、下列关于软件设计基本原理的叙述中错误的是
A、信息隐蔽是指在一个模块内的信息要使所有的模块都能访问得到
B、模块的独立程度是评价软件设计好坏的重要标准
C、耦合性用于衡量软件的模块独立性
D、内聚性用于衡量软件的模块独立性
标准答案:A
知识点解析:所谓信息隐蔽是指,在一个模块内包含的信息(过程或数据),对于不
需要这些信息的其它模块来说是不能访问的。因此,选项A中的说法是不对的。
系统设计的质量主要反映在模块的独立性_L。评价模块独立性的主要标准有两个:
一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的
关系是否紧密,称为内聚。因此,选项B、C、D中的说法都是正确的。
9、数据库概念设计中,由分散到集中的设计方法是
A、视图设计
B、视图集成设计
C、集中式模式设计
D、分散式模式设计
标准答案:R
知识点解析:数据库概念设计中,由分散到集中的设计方法是视图集成设计。
10、在下列关系运算中,可能改变关系中属性个数的是
A、并
B、差
C、投影
D、交
标准答案:C
知识点解析:投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从
一个关系中选择出所需耍的属性成分,并且按要求排列成一个新的关系,而新关系
的各个属性值来自原关系中相应的属性值。因此,经过投影运算后,会取消某些
列,即投影运算可能改变关系中属性的个数。
二、选择题(本题共25题,每题1.0分,共25分。)
11、假定a为一个整型数组名,则元素a[4]的字节地址为
A^a+4
B、a+8
C、a+16
D^a+32
标准答案:C
知识点解析:注意:VC编译器分配给整数的内存是4字节。
12、以下的for循环for(x=0,y=0;(y!=123)&&(x<4);x++);
A、是无限循环
B、循环次数不定
C、最多执行4次
D、最多执行3次
标准答案:c
知识点露析:本题考察for循环的三个表达式的用法及其执行顺序,本题中for循
环的第三个表达式完成变量自增,以控制for循环的执行次数。
13、已知inta,b;用语句scanf(,,%d%d",&a,&B);输入a,b的值时,不能作为输入数
据分隔符的是
A、,
B、空格
C、回车
D、Tab键
标准答案:A
知识点解析:C++语言规定在使用scanf输入时可以用作数据分隔符的有空格,回
车和Tab键。用户如果要从键盘输入空格字符,则需要使用其他的输入方式。
14、语句cout<<(a=2)&&(b=-2);的输出结果是
A、无输出
B、结果不确定
C、-1
D、1
标准答案:D
知识点解析:逻辑表达式的值输出结果是数字的形式。C++规定,逻辑假用数字0
表示,而逻辑真则用非零表示。注意:在C++中,如果逻辑表达式的值是非零,
则可以认为是真。VC编译器在编译输出时将逻辑真输出为1。
15、以下选项中与k=n++;完全等价的表达式是
A、k=n,n=n+l;
B、n=n+l,k=n;
C、k=++n;
D、k+=n+l;
标准答案:A
知识点解析:本题考察混合表达式的展开。
16、执行coutVVsetw(5)VV123V<selfill(*)VV16;的输出为
A、**12316
B、123**16
C、12316
D、12316**
标准答案:A
知识点解析:selw()为一次有效的设置,setfill则一直有效,直到再次设置为止。
正确答案为A。
17、设有以下类的定义:classEx{intx;public:voidsetx(intt=0);};若在类外定义
成员函数setx(),以下定义形式中正确的是
A^voidsetx(int
B、voidEx::sctx(intt){...}
C、Ex::voidsetx(int
D、voidEx::setx(){...}
标准答案:B
知识点解析:选项A可以排除,原因是类的成员函数的定义必须用域作用符::进行
限定:选项C的限定位置不对,函数的类型应在最前面。根据上下文可以指导,
setx为单参成员函数,在定义时也必须指定参数,因此选项D也可以排除,正确答
案为B。
18、关于const修饰符的说法中,错误的是
A、const既可以修饰成员函数,也可以修饰数据成员,还可以修饰对象
B、若const修饰了一个对象,则该对象中的所有数据成员都无法被更新
C、常对象无法调用一般成员函数
D、常成员函数只能被常对象调用,不能被一般对象调用
标准答案:D
知识点解析:本题考察const修饰符的含义及其修饰不同对象的规则。常成员函数
既能被常对象调用,也能被一般对象调用,一旦const修饰了一个对象,则对象的
所有数据成员都无法更新。
19、以下不属于构造函数特征的是
A、构造函数名与类名相同
B、构造函数可以重载
C、构造函数可以设置默认参数
D、构造函数必须指定函数类型
标准答案:D
知识点解析:构造函数和析构函数一样,是类的特殊的成员函数。其特点之一是不
指定返回类型,故D项错误。
20、以下叙述正确的是
A、派生类中不可以定义与基类中同名的成员变量
B、派生类中不可以重载成员函数
C、派生类中不能调用基类中的同名函数
D、以上三项均不正确
标准答案:D
知识点解析:派生类和基类之间的关系比较重要,派生类不仅可以定义同名的成员
变量,还可以调用或重载基类的同名函数,这是类的多态性的基础。
21、如果一个类含有一个以上的纯虚函数,则称该类为
A、虚基类
B、抽象类
C、派生类
D、以上都不对
标准答案:B
知识点解析:纯虚函数一般提供派生类进行继承的参考,是多态性的重要保证,一
个具有纯虚函数的类称为抽象类,抽象类可以具有其他类的特点,但它不能定义对
象,不能声明为内联函数。
22、下列各类函数中,不是类的成员函数的是
A、构造函数
B、析构函数
C、友元函数
D、拷贝构造函数
标准答案:C
知识点解析:构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数
一样属于类的特殊的成员函数。而友元函数则是为了增加类的访问灵活行而允许其
他类的成员函数或全局函数访问类的内部变量或成员函数的一种机制,其缺点是破
坏了类的封装性。
23、在多继承中,公用派生和私有派生对于基类成员在派生类中的可访问性与单继
承规则
A、完全相同
B、完全不同
C、部分相同,部分不同
D、以上都不对
标准答案:A
知识点解析:C++语言中为了简化继承关系,规定多重继承中可访问性规则同单继
承规则。
24、已知类A有公用数据成员a,并重载了二运算符,且有Aobj2;constAptr*=new
A;则下列语句错误的是
A、ptr->a=100;
B、ptr=&obj2;
C^ptr++;
D、obj2=*ptr;
标准答案:A
知识点解析:本题考察const修饰符的作用。注意:const位置不同,其修饰的部分
也是不同的。本题中consi修饰的是pir所指的对象本身,所以,pir是可以重新指
向新的对象,而ptr->a则无法被更新。
25、已知语句intm=10;则下列引用的表示中正确的是
A、int&x=m;
B、int&y=10;
C、int&z;
D、float&t=&m;
标准答案:A
知识点解析:本题考察引用的定义既使用.引用是C++中新引入的概念.其使用
方法同变量,而其本质同指针,具有指针的灵活性。引用必须用变量进行赋值,不
能用常量或常数。
26、以下有关类与结构体关系的叙述不正确的是
A、结构体中只包含数据;类中封装了数据和操作
B、结构体的成员对外界通常是开放的;类的成员可以被隐蔽
C^用struct不能声明一个类型名:而class可以声明一个类名
D、结构体成员默认为public;类成员默认为private
标准答案:C
知识点解析:可以说类来源于结构体,两者有相似之处。结构也可以声明类型名,
但类的功能更强大一些,不仅增加了操作,还能够隐藏和包含其成员变量或成员函
数。
27、以下不能作为输出流对象的是
文件
A、
内存
B、
键盘
c、
显示
D、
:C
答案
标准
流
输入
件,而
和文
内存
示器,
如显
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47466-2026潜水器操控显示用标志及缩略语
- 会员生日专属服务流程规范
- 年度安全生产风险评估管理办法
- 客户投诉处理标准化操作流程
- 茶园有机肥科学施用指引
- 高血压饮食干预指导方案
- 颈椎病理疗康复标准流程
- 农产品产地市场交易标准化管理操作规范
- 夏玉米宽窄行密植高产方案
- 脊柱侧弯筛查评估方案
- 医学人工智能导论
- 2025年银行考试-中信银行运营管理资质认证考试历年参考题库含答案解析(5套典型考题)
- 2025年贵州省中考理科综合(物理化学)试卷真题(含答案详解)
- 药品新品上市管理制度
- DB4403T 508-2024《生产经营单位锂离子电池存储使用安全规范》
- 学校餐费退费管理制度
- (高清版)DB13∕T 5733-2023 食管胃静脉曲张套扎术临床操作技术规范
- 数学-第十一章 不等式与不等式组单元测试卷 2024-2025学年人教版数学七年级下册
- 鲁科版高中化学选择性必修2第1章第3节第1课时原子半径及其变化规律元素的电离能及其变化规律基础课课件
- 2025年华侨港澳台学生联招考试英语试卷试题(含答案详解)
- 严重精神障碍患者报告卡
评论
0/150
提交评论