【计算机类职业资格】国家二级C++机试(选择题)模拟试卷131及答案解析.doc

上传人:王申宇 文档编号:1332018 上传时间:2019-10-17 格式:DOC 页数:12 大小:68KB
下载 相关 举报
【计算机类职业资格】国家二级C++机试(选择题)模拟试卷131及答案解析.doc_第1页
第1页 / 共12页
【计算机类职业资格】国家二级C++机试(选择题)模拟试卷131及答案解析.doc_第2页
第2页 / 共12页
【计算机类职业资格】国家二级C++机试(选择题)模拟试卷131及答案解析.doc_第3页
第3页 / 共12页
【计算机类职业资格】国家二级C++机试(选择题)模拟试卷131及答案解析.doc_第4页
第4页 / 共12页
【计算机类职业资格】国家二级C++机试(选择题)模拟试卷131及答案解析.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、国家二级 C+机试(选择题)模拟试卷 131及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.算法的时间复杂度是指( )。(分数:2.00)A.算法的长度B.执行算法所需要的时间C.算法中的指令条数D.算法执行过程中所需要的基本运算次数2.以下数据结构中,属于非线性数据结构的是( )。(分数:2.00)A.栈B.线性表C.队列D.二叉树3.数据结构中,与所使用的计算机无关的是数据的( )。(分数:2.00)A.存储结构B.物理结构C.逻辑结构D.线性结构4.内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是( )。(分数:2.00)A.顺

2、序内聚B.偶然内聚C.时间内聚D.逻辑内聚5.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。(分数:2.00)A.连接码B.关系码C.外码D.候选码6.检查软件产品是否符合需求定义的过程称为 ( )。(分数:2.00)A.确认测试B.需求测试C.验证测试D.路径测试7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是 ( )。(分数:2.00)A.控制流B.加工C.存储文件D.源和潭8.待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的

3、顺序排序,采取简单选择排序法,第一趟排序后关键码 15被放到第( )个位置。(分数:2.00)A.2B.3C.4D.59.对关系 S和关系 R进行集合运算,结果中既包含关系 S中的所有元组也包含关系 R中的所有元组,这样的集合运算称为( )。(分数:2.00)A.并运算B.交运算C.差运算D.除运算10.下列选项中,不属于数据管理员(DBA)职责的是( )。(分数:2.00)A.数据库维护B.数据库设计C.改善系统性能,提高系统效率D.数据类型转换11.假定 MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。(分数:2.00)A.MyClass(MyClass x);B.MyCl

4、ass(MyClass&x);C.MyClass(&x);D.MyClass(x);12.下列函数的功能是判断字符串 str是否对称,对称则返回 true,否则返回 false,则横线处应填上( )。Bool fun(char*str) int i=0,j=0; while(strj)j+; for(j 一;i=B.C.&D.(y)?(x):(y) void main() int i j,k; i=10; j=15;k=MAX(i,j)*10; couta; result=fun( a); cout= B.C.&D.(y)?(x):(y) void main() int i j,k; i=10

5、; j=15;k=MAX(i,j)*10; couty)?(x):(y)是当 x大于 y时取 x,否则取 y。当 i=10,j=15 时,“MAX(i,j)”的值为 15,所以“k=MAX(ij)*10;”答案为:150。15.定义如下枚举类型 enumMonday,Tuesday,Wednesday,Thrusday,Friday=2;表达式 Wednesday=Friday的值是( )。(分数:2.00)A.falseB.true C.2D.异常解析:解析:enum枚举类型名枚举元素表:其中:关键词“enum”表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组

6、成。本题中的枚举类型中的数据值Wednesday为 2,而 Frida3,的值赋值为 2,所以判断 Wednesday,等于 Friday的表达式值为真,即tnle。16.以下程序运行后的输出结果是( )。 #include void main() char a=“abbcabbcabbc”; int i=0j=0,k=0; while(ai) if(aiD=a) j+; if(ai=b) k+: i+: couta; result=fun( a); coutresult=n;i+) p*=i; result+=p; return result; (分数:2.00)A.4B.8C.9 D.20

7、解析:解析:由程序 main主函数入手,调用 fun函数获得返回值 resuh输出。题目中假定 a=3,即调用语句 fun(a)中的输入参数为 a,进入 fun晒数,在 for循环中当 i小于等于 n,即输入参数 3时,循环 3次执行“p*=i;result+=p;”语句。即执行三次 p=p*i,result=result+p,result 的结果为 9。返回的fun函数结果为 9,即“coutresult:end1:”输出 9。18.下列关于指针的运算中,( )是非法的。(分数:2.00)A.两个指针在一定条件下,可以进行相等或不等的比较运算B.可以将一个空指针赋值给某个指针C.一个指针可以

8、加上两个整数之差D.两个指针在一定条件下可以相加 解析:解析:指针变量如果指向同一个数组的元素,则可以进行比较,所以 A)是正确的。指针变量的赋值就是将一个变量地址赋给一个指针变量。并且指针变量可以是空值,即该指针不指向任何变量。B)同样也是正确的。指针变量加减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。即 C)也是正确的。如果两个指针指向同一个数组元素,两个指针是可以相减的,标识两个指针之间的死索个数。但是它们是不可相加的。19.下面程序的输出结果为( )。 #includeiostream-h void main() int x; int&y=

9、x;变量引用 y=99; cout“x=”xendl: (分数:2.00)A.x=99 B.x=9C.x=0D.异常解析:解析:程序中的“inl&y=x;”语句中的“&”引用运算符。&y=x 语句叮以理解为 y具有 x的地址,所以 v的值 99,x 的值也是 99所以答案是 x=99。20.下面程序输出的结果为( )。 #include void fun(rota,int b) int temp; temp=a; a=b; b=temp; void main() int m,n; m=1; n=2; fun(m,n); coutm“”nA.12 B.21C.22D.程序有错误解析:解析:函数

10、fun中定义的参数 a和 b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空问,结束后,形参所占有的内存单元也被释放。并且函数 fun没有返回值,它做的交换操作,并不能影向实际参数 m和 n。所以输出值保持不变,仍然是 1和 2,即输出:12。21.存在定义 int a10,x,*pa;,若 pa=&a0,下列的哪个选项和其他 3个选项不是等价的( )?(分数:2.00)A.x=*pa; B.x=*(a+1);C.x=*(pa+1);D.x=a1;解析:解析:选项 B)、C)、D)都是获取 a(1)元素,而选项 A)是获取 a(0)的元索。22.对数组名作函数的参数,下

11、面描述正确的是 ( )。(分数:2.00)A.数组名作函数的参数,调用时将实参数组复制给形参数组B.数组名作函数的参数,主调函数和被调函数共用一段存储单元 C.数组名作参数时,形参定义的数组长度不能省略D.数组名作参数,不能改变主调函数中的数据解析:解析:数组作为参数实参传递的赴数组的首地址。所以主调函数和被调函数共用一段存储单元。23.关于静态成员的描述中,错误的是( )。(分数:2.00)A.静态成员可分为静态数据成员和静态成员函数B.静态数据成员定义后必须在类体内进行初始化C.静态数据成员初始化不使用其构造函数 D.静态数据成员函数中不能直接引用非静态成员解析:解析:可以在类的构造函数中

12、对静态数据成员进行初始化。24.下列关于构造函数的描述中,错误的是( )。(分数:2.00)A.构造函数可以设置默认的参数B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数D.构造函数不可以重载 解析:解析:在一个类中可以定义多个构造函数,以便对类对象提供不同的初始化的疗法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。25.有以下程序,输出结果( )。 #include void main() static int b3=1,2,3,4,5,6);b02=12,b12=18; cout*b“”“t”*(b+1)“t”b02+b12+b22A.1 4 4 1

13、 8 30 B.1 1 4 4 1 8C.4 4 18 1 1D.4 4 4 30 1解析:解析:本题 b是一个 33的一维数组:利用指针表示数组:*(*(数绀+j)+i)*b 表示 b00元素,值是 1*(b+1)表示是 b01的元素,值是 4。*(*(b+1)+2)表示 b12的元素,值是 18,b02+b12+b22之和是 30。26.下列程序的输出结果是( )。 #include using namespace std; void fun(int &r) r*=2;) int main() intn=50; fun(n); coutnA.0B.20C.50D.100 解析:解析:题中主

14、程序中首先定义整型变量 n=50,然后调用函数。fun,实际参数为 n。函数 fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以 2。27.下列说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public成员在派生类中仍是 public的B.公有继承时基类中的 private成员在派生类中仍是 private的 C.私有继承时基类中的 public成员在派生类中是 private的D.保护继承时基类中的 public成员在派生类中是 protected的解析:解析:此题考查的是继承时基类成员属性改变。选项 B)中,公有继承时基类中的 privat

15、e成员在派生类中不是 pfivate的,而是不可访问的。所以选项 B)错误;其他选项叙述均正确。28.多继承的构造顺序可分为如下四步:所有非虚基类的构造函数按照它们被继承的顺序构造所有虚基类的构造函数按照它们被继承的顺序构造所有子对象的构造函数按照它们声明的顺序构造派生类自己的构造函数体这四个步骤的正确顺序是( )。(分数:2.00)A.B.C. D.解析:解析:多继承派生类的构造顺序是:首先调用虚基类的构造函数,然后调用非虚基类的构造函数按照它们被继承的顺序构造,其次调用子对象的构造函数,最后是派生类构造函数中的内容。29.下面关于构造函数和析构函数的描述中,错误的是( )。(分数:2.00

16、)A.析构函数可以声明为虚函数B.对虚析构函数的调用可以采用动态联编C.一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响D.构造函数可以声明为虚函数 解析:解析:析构函数可以声明为虚函数,但是构造函数不能声明为虚函数;类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响。30.设有以下定义和程序: #include class A1 public: void showl() coutA.obj1show10;B.obj2show10;C.obj3show10; D.obj2show20;解析:解析:由于 class A3:protected A2,所以类 A3的对象 o

17、bi3不能直接访问基类 A1的成员函数showl(),所以选项 C)是错误的;其他选项均有访问的权限,正确。31.下列关于运算符重载的描述中,正确的是 ( )。(分数:2.00)A.运算符重载可以改变运算符的操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构 解析:解析:重载的运算符仍要保持其原来的操作数、优先级和结合性不变。32.下面程序的输出结果是( )。 #include #include using namespace std; class point private: double x: double y; public: point

18、(double a,double b1 x=a; y=b; friend double distances(point a,point b); ; double distances(point a,point b) return sqrt(aXbx)*(ax 一 bx)+(ayby)*(ay 一 by); int main() point p1(1,2); point p2(5,2); coutA.2B.4 C.8D.16解析:解析:分析题目,最终要实现的结果是 sqrt(axbx)*(axbx)+(ayby)*(ayby),其中的 ax 和 ay 分别指 pl(1,2)中的 l和 2。这样容

19、易得到结果是(1-5)*(1-5)+(22)*(22)=16,再开方得到结果为 4。33.有以下程序: #include using namespace std; class R public: R(int r1,int r2) R1=r1; R2=r2: void print(); void print()const; private: int R1,R2; ; void R:print() coutR1“,”R2R1“,”R2A.5,4B.4,5C.20,52 D.52,20解析:解析:此题中,语句 R a(5,4)调用构造函数 R(int r1,int r2)但未有输出结果;bprint

20、();调用常成员函数(因为 b是常对象)void print()const,输出结果是 20,52。34.下列程序的输出结果是( )。 #include using namespace std; template T fun(T a,T b)return(a= b)?a:b; int main() coutfun(3,6),A.0,314B.3,314 C.3,3D.314,314解析:解析:此函数模板的功能是输出 a、b 两数中较小的那个数。(3,6)输出 3,(314F,628F)输出314。35.关于模板,下列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实

21、参B.类模板只能有虚拟类型参数 C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数解析:解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C+中可以为类模板的参数设置默认值,所以选项 B)错误。36.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用( )关键字来修饰。(分数:2.00)A.constB.staticC.voidD.class 解析:解析:如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用 class关键字来修饰。

22、37.下列关于 this指针的叙述中,正确的是( )。(分数:2.00)A.this指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this指针D.this指针表示了成员函数当前操作的数据所属的对象 解析:解析:this 指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用 this指针无意义。38.下列有关函数重载的叙述中,错误的是( )。(分数

23、:2.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同 D.重载函数的参数可以带有默认值解析:解析:此题考查的是函数重载的概念。在 C+语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项 C)错误。39.对于一个类定义,下列叙述中错误的是( )。(分数:2.00)A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 C.如果没有定义构造函数,编译器将生成一

24、个缺省的构造函数和一个拷贝构造函数D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数解析:解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。40.下列关于派生类构造函数和析构函数的说法中,错误的是( )。(分数:2.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1