最新全国计算机等级考试二级c++题库1共17套.docx
- 文档编号:8843754
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:333.16KB
最新全国计算机等级考试二级c++题库1共17套.docx
《最新全国计算机等级考试二级c++题库1共17套.docx》由会员分享,可在线阅读,更多相关《最新全国计算机等级考试二级c++题库1共17套.docx(23页珍藏版)》请在冰豆网上搜索。
最新全国计算机等级考试二级c++题库1共17套
第一套
下面叙述正确的是。
算法的执行效率与数据的存储结构无关算法的空间复杂度是指算法程序中指令(或语句)的条数算法的有穷性是指算法必须能在执行有限个步骤之后终止以上三种描述都不对
算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。
数据结构和算法是计算机科学的两个重要支柱。
它们是一个不可分割的整体。
算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。
算法的有穷性是指一个算法必须在执行有限的步骤以后结束。
本题答案为C。
数据库系统的核心是。
1、
A、
B、
C、
D、
2、
A、
数据模型数据库管理系统软件工具数据库
数据库管理系统DBM是数据库系统的核心。
DBM是负责数据库的建立、使用和维护的软件。
在操作系统之上,实施对数据库的统一管理和控制。
用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS另外,DBM还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
B、
C、
D、
DBM建立
本题答案为B。
在结构化方法中,用数据流程图(DFD作为描述工具的软件开发阶段是。
可行性分析
需求分析
详细设计
程序编码软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。
其中需求分析阶段常用的工具是数据流图和数据字典。
本题答案为B。
在软件开发中,下面任务不属于设计阶段的是。
数据结构设计
给出系统模块结构
定义模块算法
定义需求并建立系统模型软件设计一般分为总体设计和详细设计两个阶段,总体设计的任务是确定软件的总体结构,子系统和模块的划分,并确定模块间的接口和评价模块划分质量,以及进行数据分析。
详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。
本题答案为D。
下列叙述中正确的是。
数据库是一个独立的系统,不需要操作系统的支持数据库设计是指设计数据库管理系统
数据库技术的根本目标是要解决数据共享的问题数据库系统中,数据的物理结构必须与逻辑结构一致
数据库是存储在计算机存储设备中的、结构化的相关数据的集合。
数据库中的数据不只是面向某一项特
3、
A、
B、
C、
D、
4、
A、
B、
C、
D、
5、
A、
B、
C、
D、
定的应用,而是面向多种应用,可以被多个用户、多个应用程序共享,不具有独立的系统。
设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型。
数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:
提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。
本题答案为C。
下面描述中,符合结构化程序设计风格的是。
使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑模块只有一个入口,可以有多个出口
注重提高程序的执行效率
不使用goto语句
基于对结构化程序设计原则、方法以及结构化程序基本构成结构的掌握和了解,在结构化程序设计的具体实施中,要注意把握如下要素:
1
6、
A、
B、
C、
D、
、使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;、选用的控制结构只准许有一个入口和一个出口;、程序语句组成容易识别的块,每块只有一个入口和一个出口;、复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;、语言中所没有的控制结构,应该采用前后一致的方法来模拟;
、严格控制GOT语句的使用。
其意思是指:
(1)用一个非结构化的程序设计语言去实现一个结构化的构造;
(2)若不使用GOT语句会使功能模糊;(3)在某种可以改善而不是损害程序可读性的情况下。
本题答案为A。
下列模式中,能够给出数据库物理存储结构与物理存取方法的是。
内模式外模式概念模式逻辑模式
数据库管理系统的三级模式结构由外模式、模式和内模式组成。
外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。
模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。
外模式是模式的一部分。
内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。
7、
A、
B、
C、
D、
8、
A、
B、
C、
D、
本题答案为A。
下面概念中,不属于面向对象方法的是。
对象
继承
类
过程调用
面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
面向对象方法从对象出发,发展出对象,类,消息,继承等概念。
本题答案为D。
9、在一棵二叉树上第5层的结点数最多是。
A、8
B、
16
C、
32
D、
15
根据二叉树的性质:
二叉树第i(i>1)层上至多有2i-1个结点。
得到第5层的结点数最多是16。
本题答案为B。
10、以下数据结构中不属于线性数据结构的是
)。
先出表(LastInFirstOut);队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。
在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。
因此队列又称先进先出表(FirstInFirstOut
本题答案为C。
11、下列程序的输出结果是#include
intmain()
{
chara[]="Hello,World";
char*ptr=a;
while(*ptr)
if(*ptr>='a'&&*ptr<='z')
cout< elsecout<<*ptr; ptr++; return0; 12、关于动态存储分配,下列说法正确的是 Anew和delete是C++语言中专门用于动态内存分配和释放的函数 B动态分配的内存空间也可以被初始化 delete释放内 C当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用存空间 D当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new new和deleted在C++中用来申请与释放内存的运算,不是函数,故选项A错。 动态内存分配时是可以对 其进行初始化的,如对类的初始化。 在C++中,没有垃圾回收装置,系统本身不会自动回收内存,选项 13、执行语句序列intn; cin>>n; switch(n){case1: case2: cout<<'1'; case3: case4: cout<<'2';break; default: cout<<'3'; 本题答案为D。 14、有以下类定义classPoint{public: Point(intx=0,inty=0){_x=x;_y=y;} voidMove(intxOff,intyOff) {_x+=xOff;_y+=yOff;} voidPrint()const {cout<<'('<<_x<<','<<_y<<')'< private: };下列语句中会发生编译错误的是 A、 B、 c、 D、 Pointpt;pt.Print();constPointpt;pt.Print() Pointpt;pt.Move(1,2); constPointpt;pt.Move(1,2); 本题主要考查了const关键字的使用。 可以在类型或类名前加上const来声明一个在运行时不可改变的 对象或变量。 如果声明了一个常量对象,则其内部成员均不可改变,在编译时会检查其对应类的成员变量 是否为左值,如果是,则会出现错误。 对于B而言,由于在对象pt中的print方法中没有发现存在左值成员 变量,故在编译时不会出错。 本题答案为D。 15、有以下类定义 classMyClass {private: intid; chargender; char*phone;public: MyClass(): id(0),gender('#'),phone(NULL){} MyClass(intno,charge='#',char*ph=NULL){id=no;gender=ge;phone=ph;} }; 下列类对象定义语句中错误的是。 A、 MyClassmyObj; MyClassmyObj(11,""); MyClassmyObj(12,'m'); MyClassmyObj(12); 对于A,由于在创建MyClass的实例myObj时,没有参数,所以其调用了第一个构造函数。 对于B,由于 有两个参数,故其调用了第二个构造函数,第二个构造函数有两个缺省参数,在调用时,实参会按从左到右的顺序依次传给形参,所以第二个参数”会传递给形参ge,而在原型中ge为字符型,实参为指向字符的 指针,故在编译时会出现错误。 C与D都能够正确的实现参数的传递。 本题答案为B。 16、下列函数原型声明中错误的是。 B、 C、 D、 A、 B、 C、 D、 voidFun(intx=0,inty=0); voidFun(intx,inty); voidFun(intx,inty=0); voidFun(intx=0,inty); 在C++中,可以为参数指定默认值,在函数调用时没有指定与形参相对应的实参时就自动使用默认值。 默认参数可以简化复杂函数的调用。 默认参数通常在函数名第一次出现在程序中的时候,如在函数原型中,指定默认参数值。 指定默认参数的方式从语法上看与变量初始化相似。 例如: voidmyfunc(intx=0,inty=1);如果一个函数中有多个参数,则默认参数应从右至左逐个定义。 本题答案为D。 17、关于面向对象的程序设计方法,下列说法正确的是。 "封装性"指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 "多态性"指的是对象的状态会根据运行时要求自动变化基类的私有成员在派生类的对象中不可访问,也不占内存空间在面向对象的程序设计中,结构化程序设计方法仍有着重要作用封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部;多 A、 B、 C、 D、 态性是指当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为;基类的私有成员对派生类来说是不可访问的,因此在派生类中直接引用基类的私有变量成员是不允许的,可以通过基类的公用成员函数来引用基类的私有变量成员;C++是一种优秀的高级程序设计语言,它是以C语言为基础而逐渐发 展起来的。 C++语言既保留了传统的结构化程序设计方法,又对流行的面向对象程序设计方法提供了完整的 支持。 本题答案为D。 18、下列是模板声明的开始部分,其中正确的是 #include voidfun() {{ staticinti=1;std: : cout< std: : cout< }intmain() { fun();fun(); return0; }程序执行后的输出结果是 2,0,3,0, 1,0,2,0, 本题主要考查了static型的变量,在C+冲可以为函数或类指定static型的变量,如果将一个变量指定为static型,则该变量在内存中仅有一个副本,同时在函数或类执行完成后空间不会被释放,以前的值将会被保留。 同时还考查了C++中变量作用域的问题,在C++中如果要将一个变量限定在指定的范围内,可以将该作用域用{}包含起来,同时可在函数的外部指定全局变量,该变量的作用范围是从当前位置开始到程序结束。 对于"staticinti=1;"中的i,初始值为1,在调用std: : coutvvi++vv','后,将输出"1,",然后自加1,对于第二句std: : coutvvivv',',该i所代表的应该是全局变量"i",故输出"0,"。 在第二次执行fun()时,由于第一i为static型变量,其值是保留的,故输出"2,",对于第二个i则输出"0,"。 本题答案为D。 20、有以下程序 #include usingnamespacestd; classMyClass {public: MyClass(intn){number=n;} //拷贝构造函数 MyClass(MyClass&other){number=other.number;} ~MyClass(){} private: intnumber; }; MyClassfun(MyClassp) MyClasstemp(p); returntemp; intmain() MyClassobj1(10),obj2(0); MyClassobj3(obj1); obj2=fun(obj3); return0; } 程序执行时, MyClass类的拷贝构造函数被调用的次数是 A、 B、 C、 D、 将执行一次构造函数,obj2(0)也将执行一次构造函数;将以obj1作为参数执行一次构造函数; 中的temp(p)也将执行一次构造函数,而fun本身是按值传递参数的,形参在fun函数内也要 分配独立的空间,故也要执行一次构造函数,对于其返回结果也是MyClass类型的,同样需要执行一次构造 obj1(10) obj3(obj1) fun(obj3) 函数,故一共要执行4次。 本题答案为B。 21、 已知: intm=10;在下列定义引用的语句中,正确的是 A、 B、 C、 D、 间, 址, int&x=m; inty=&m; int&z; int&t=&m; 本题主要考查了对引用及地址(&)的理解,引用实际上就是别名,它与被引用变量拥有同一个地址空 对于选项A而言,其操作实际上就是为m赋于一个别名x,因此选项A是对的。 对于选项B,&n表示m的地而y是一个整型变量,在C++中不能从地址值隐式转换为整型值,故选项B是错的。 对于选项C,引用必 须要用被引用的对象,即引用必须要初始化;选项□中t是一个整型引用,而其被引用的对象却是m的地址, 存在着与选项B类似的错误,因此选项D也是错的。 本题答案为A。 22、在下面的运算符重载函数的原型中,错误的是 23、执行语句序列ofstreamoutfile("DATA.DAT"); …)coutvv"OK";elsecoutwTAIL"; 如果文件打开成功显示"OK",否则就显示"FAIL"。 由此可知,上面if语句的…处的表达式应是 功, 件是否已打开,如果正常打开则fail()方法返回0,good()方法返回非零,否则fail()返回非零,good()返回0。 本题答案为C。 24、在一个类体的下列声明中,正确的纯虚函数声明是。 如果要定义一个函数为纯虚函数,只要在函数原型后加上“=0”就可以了。 对于纯虚函数,必须要在其派生 类中实现,因此对于一个拥有纯虚函数的类,实质上就是一个抽象类。 对于这种类,不能为其创建实例。 本题答案为A。 25、有以下类定义classMyClass { public: MyClass(){cout<<1;}}; 则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是A、11 B、111 C、1111 D、11111 classMyClass定义了一个类,其中MyClass(){coutvv1;}为其的构造函数,当程序创建类MyClass的实 例时,该函数将会被调用,在执行“MyClassa,b[2],*p[2];”时,一共创建了3个这样的实例,故一共执行 构造函数3次,对于变量P,则是声明了一个指针数组,该数组中的元素是指向类MyClass实例的指针,本身 并没有创建类的实例。 本题答案为B。 26、有以下程序#include classComplexpublic: Complex(doubler=0,doublei=0): re(r),im(i){} doublereal()const{returnre;} doubleimag()const{returnim;} Complexoperator+(Complexc)const {returnComplex(re+c.re,im+c.im);}private: doublere,im; }; intmain() Complexa=Complex(1,1)+Complex(5); cout< return0; }程序执行后的输出结果是 ,则下列重载形式中正确的是 1+1i 本题定义了一个复数类,并在该类上重载了+运算符。 在main函数中,定义了一个复数类a,其值为两 个复数1+i与5的和。 在复数类中,定义了real与imag方法,分别用来取出复数的实部与虚部。 本题答案为B。 27、已知程序中已经定义了函数test,其原型是inttest(int,int,int); 许有类型完全相同的参数列表,故A是错的,对于返回类型,在重载时没有特别的要求。 本题答案为B。 28、C++流中重载的运算符》是一个。 用于输出操作的非成员函数用于输入操作的非成员函数用于输出操作的成员函数用于输入操作的成员函数 C++流的输入运算符>>和输出运算符<<只能作为非类成员函数重载。 在一个类中,如有必要,可将>>或<<声明为友元函数。 本题答案为B。 29、已知函数f的原型是: Voidf(int*a,long&b); 调用语句是。 A、 B、 C、 D、 ,变量v1、v2的定义是: intv1;longv2;,正确的 A、 f(v1,&v2); f(v1,v2); f(&v1,v2); f(&v1,&v2); 对于函数f而言,其第一个参数为整型指针,第二个参数为一引用(实际上就是按地址传递参数),该引用是一长整型的引用。 对于选项A、B,实参变量v1为整型,而所要传递的对应的形参变量a是指针型,它接受的是地址,若将实参变量v1改为&V1,那么这一传递就是正确的;对于选项A、D,&V2为一地址,传递给整型引用,也将导致出错。 本题答案为C。 B、 C、 D、 30、在公有派生的情况下,派生类中定义的成员函数只能访问原基类的。 公有成员和私有成员私有成员和保护成员公有成员和保护成员 私有成员、保护成员和公有成员 在一个派生类中,其成员由两部分构成: 一部分是从基类继承得到的,另一部分是自己定义的新成员,所有这些成员仍然分为公有、私有和保护三种访问属性。 其中,从基类继承下来的全部成员构成派生类的基类部分,这部分的私有成员是派生类不能直接访问的,公有成员和保护成员则是派生类可以直接访问的,但是它们在派生类中的访问属性将随着派生类对基类的继承方式而改变。 本题答案为C。 A、 B、 C、 D、 31、一个类可以同时继承多个类,称为多继承。 下列关于多继承和虚基类的表述中,错误的是_ 每个派生类的构造函数都要为虚基类构造函数提供实参多继承时有可能出现对基类成员访问的二义性问题使用虚基类可以解决二义性问题并实现运行时的多态性建立最远派生类对象时,虚基类的构造函数会首先被调用 虚基类的构造函数将在其派生类创建实例时被执行,在执行时,派生类必须为虚基类的构造函数提供实参。 在多重继承中,如果通过两条以上的路径对同一基类实行继承,这样,在派生类中将有多个基类的副本,从而产生二义性。 在采用虚基类时,其成员将仅存唯一的副本,这样就可以解决二义性问题,但不能够实现运行时多态,可通过抽象类或虚拟函数来实现,虚基类的构造函数将会首先被执行。 本题答案为C。 A、 B、 C、 D、 32、在C++中用来实现运行时多态性的是 重载函数 析构函数 构造函数 A、 B、 C、 D虚函数 构造函数是类在创建实例时自动执行的函数,它不能实现运行时多态;析构函数是类在销毁其实例时创建的,也不能实现运行时多态,重载函数能够使相同的的功能具有统一的接口,但可以有不同的参数。 虚函数可以用来动态地根据当前实例所属的类调用相应的函数,实现运行时多态性。 本题答案为D。 33、关于友元,下列说法错误的是。 标准答案为: 一对多或1对多或一对n或1: N或1: n或1: n或1: N或一对m或1: M或1: m或1: m或1: N 实体之间的对应关系称为联系,它反映现实世界事物之间的相互关联。 两个实体间的联系可以归结为三种类型: 一对一联系表现为某一实体与另一实体一一对应相关联;一对多联系表现为某一实体与相关多个实体相关联;多对多联系表现为多个实体与相关多个实体相关联。 39、算法的复杂度主要包括复杂度和空间复杂度。 标准答案为: 时间一个程序在计算机上运行时所耗费的时间由下列因素所决定: 程序运行时所需输入的数据总量,对源程序进行编译所需时间,计算机执行每条指令所需时间,程序中的指令重复执行的次数。 前一条取决于实现算法的计算机软、硬件系统,习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称做算法的时间复杂度。 算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。 40、若按功能划分,软件测试的方法通常分为白盒测试方法和测试方法。 标准答案为: 黑盒软件测试的方法有三种: 动态测试、静态测试和正确性证明。 设计测试实例的方法一般有两类: 黑盒测试方法和白盒测试方法。 在使用黑盒法设计测试实例时,测试人员将程序看成一个"黑盒",也就是说, 他不关心程序内部是如何实现的,而只是检查程序是否符合它的"功能说明",所以使用黑盒法设计的测试 用例完全是根据程序的功能说明来设计的;如用白盒法,则需要了解程序内部的结构,此时的测试用例是根据程序的内部逻辑来设计的,如果想用白盒法发现程序中所有的错误,则至少必须使程序中每种可能的路径都执行一次。 实际上这是不可能的,即使测遍所有的路径,仍不一定能保证符合相应的功能要求。 41、设有定义语句: inta=12;,则表达式a*=2+3的运算结果是。 标准答案为: 60根据运算的优先级和结合性,可以将表达式的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 全国 计算机等级考试 二级 c+ 题库 17