国家二级(C++)笔试模拟试卷19_第1页
国家二级(C++)笔试模拟试卷19_第2页
国家二级(C++)笔试模拟试卷19_第3页
国家二级(C++)笔试模拟试卷19_第4页
国家二级(C++)笔试模拟试卷19_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

眼家二级(C++)笔试模拟试卷第1套

一、公共基础选择题(本题共70题,每题7.0分,共

10分。)

1、C++源晚间中包含的输入/输出头文件为()。

A、stdio.h

B、stdafx.h

C、iostream.h

D^stream.h

标准答案:4

知识点解析:暂无解析

2、下列关于C++函数的描述中正确的是()。

A、主函数是程序的入口,它由用户定义的函数调用

B、函数在调用之前必须先被声明

C、每个用户定义的函数只能被其他函数调用一次

D、函数是C++中面向对象程序设计框架的基本组成单元

标准答案:2

知识点解析:暂无解析

3、已知inta,*pa=&a;输出指针pa十进制的地址值的方法是()。

A、cout<<pa;

Bxcout<<*p:

C、cout<<&pa;

D、coul<<long(pa);

标准答案:8-

知识点解析:暂无解析

4、包容类Contain和内嵌类Embed定义如下:#include<iostream.h>classContain

{private:intX;protected:intz;public:classEmbed{private:inty;

public:Embed(){y=100;}intEmbcd_Fun();JMyEmbcd;int

Contain_Fun(););对上面的定义,正确的描述是()。

A、定义类Embed对象的语句是:Contain?Embeden'.bed;

B、类Contain的成员函数Contain_Fun()中可以用MyEmbcD.y的方式访问类

Embed的私有成员y

C^类Embed的成员函数Embed_Fun()中可以直接访问Contain的私有成员x

D、类Embed的成员函数Embed_Fun()中可以直接访问Contain的保护成员Z

标准答案:1

知识点解析:暂无解析

5、若要把函数voidf()定义为aClass的友元函数,则应该类aClass的定义中加入的

语句是()。

A、voidf();

B>staticvoidf();

C、friendf();

D、friendvoidf();

标准答案:X

知识点解析:暂无解析

6、如果表达式++x/y中,++是作为友元函数重载的,/是作为成员函数重载的,则

该表达式还可为()。

A^(operator++(x)).operator/(y)

B、(operator++(0)).operatr/(y)

C、operator/((operator++(x,0)),y)

D、operator/((operator++(0)),y)

标准答案:1

知识点解析:暂无解析

7、下述静态数据成员的特性中,()是错误的。

A、说明静态数据成员时前边要加修饰符static

B、静态数据成员要在类体外进行初始化

C、引用静态数据成员时,要在静态数据成员名前加〈类名〉和作用域运算符

D、静态数据成员不是所有对象所共用的

标准答案:2

知识点解析:暂无解析

8、下列对基类和派生类关系的描述中,错误的是()。

A、派生类是基类的具体化

B、派生类是基类的子集

C、派生类是基类定义的延续

D、派生类是基类的组合

标准答案:2

知识点解析:暂无解析

9、已知枚举类型定义语句为;enum

Token{NAME,NUMBER,PLUS=5,MINUS,PRINT=10);则下列说中错误的是(j。

A、枚举常量NAME的值为1

B、枚举常量NUMBER的值为1

C、枚举常量MINUS的值为6

D、枚举常量PRINT的值为10

标准答案:1

知识点解析:暂无解析

10、有以卜.程序#inc1ude〈iostream.h>voidmain。{inta=5,b=0,c=0;

if(a=b+c)cout<<<<endl:elsecout<<"SSS1'<<<endl;}下列选项叙述

正确的是()。

A、有语法错不能通过编译

B、可以通过编译但不能通过连接

C、输出*率*

D、输出$$$

标准答案:8

知识点解析:暂无解析

二、选择题(本题共25题,每题1.0分,共25分。)

11、有如下程序:#include<iostream>usingnamespacestd;classXX{protected;

intk;public:XX(intn=5):k(n){}-XX(){cout<<"XXn;}virtualvoid

f()const=0:}:inlinevoidXX::f()const{cout<<k+3;)classYY:pubIic

XX{public:-YY(){cout<<"YY";)voidf()const{out<<k-3;XX:f();}};int

main(){XX&p=*newYY;p.f();delete&p;return0;};执行上面的程序将输出

()。

A、28XX

B、28YYXX

C、-33XX

D、-33XXYY

标准答案:1

知识点解析:暂无解析

12、类模板的模板参数()。

A、只可作为数据成员的类型

B、只可作为成员函数的返回类型

C、只可作为成员函数的参数类型

D、以上三者皆可

标准答案:8

知识点解析:暂无解析

13、在下面四个选项中,()是用来声明虚函数的。

A^virtual

B、public

C>using

D、假

标准答案:1

知识点解析:暂无解析

14、C++中运算符优先级由高到低排列正确的是()。

A、::+++〃

B、<*//,

C、sizeof%+::

D、,&&newsizeof

标准答案:1

知识点解析:暂无解析

15、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,

并返回相加结果,则该成员函数的声明语句为()。

A、ABoperator+(AB&a,AB&B)

B、ABperator+(AB&)

Csopctator+(ABa)

D、AB&operator+()

标准答案:2

知识点解析:暂无解析

16^定义如下变量:charone_char,则语句cin>>one_char等价于C语言中的()

语句。

A、printf(one_char);

B、prinft(n%c",one_char);

C>scanf(one_char);

D^scanf("%c",&one_char);

标准答案:8

知识点解析:暂无解析

17、下列关于C++函数的描述中正确的是()。

A、主函数是程序的入口,它由用户定义的函数调用

B、函数在调用之前必尔先被声明

C、每个用户定义函数只能被其他函数调用一次

D、函数是C++中面向对象程序设计框架的基本组成单元

标准答案:2

知识点解析:暂无解析

18、下面关于C++语言变量的叙述错误的是()。

A、C++语言中变量分为auto,static,extern和register四种存储类型

B、自动变量和外部变量的作用域为整个程序

C、内部静态变量的作用域是定义它的函数

D、外部静态变量的作用域是定义它的文件

标准依索.?

知识之解析:暂无解析

19、如果x=0,那么while(true)中的true与下面的条件()等价。

A、X=1

B、X==l

C、X>1

D、X<1

标准答案:1

知识点解析:暂无解析

20、以下只有在使用时才为该类型变量分配存储单元的存储类型说明是()。

A、auto和static

B、auto和register

C、register^0static

D^externregister

标准答案:2'

知识点解析:暂无解析

21、在计算机中,算法是指()。

A、加工方法

B、解题方案的准确而完整的描述

C、排序方法

D、查询方法

标准答案:2

知识点解析:暂无解析

22、一个()允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数

的参数和返回值能取任意数据类型。

A、函数模板

B、模板函数

C、类模板

D、模板类

标准答案:4

知识点解析:暂无解析

23、对于拷贝初始化构造函数,正确的描述是()。

A、在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的

拷贝初始化构造函数

B、必须为每个类定义拷贝初始化构造函数

C、如果要使用拷贝初始化构造函数,则必须在类中先定义

D、当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝

初始化构造函数

标准答案:1

知识点解析:暂无解析

24、下面关于构造函数和析构函数的描述中,错误的是()。

A、析构函数可以声明为虚函数

B、对虚析构函数的调用可以采用动联编

C、一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响

D、构造函数可以声明为虚函数

标准答案:8

知识点解析:暂无解析

25、关于友元的概念错误的是()。

A、友元函数没有this指针

B、调用友元函数时必须在它的实参中给出要访问的对象

C、一个类的成员函数也可以作为另一个类的友元函数

D、只能在类的公有段声明友元

标准答案:8

知识点解析:暂无解析

26、已知:inta,b;下列switch语句中,()是正确的。

A、switdh(a)(casea:a++;break;caseb:b++:break:}

B、switch(a+b){case1:a+b;break;caseI:a-b)

C、switch(a*a){case1,2:++a;case3,4:++b;}

D、swish(a/10+b){cases5:a/5;break:default:a+b:}

标准答案:8

知识点解析:暂无解析

27、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造

函数,这样将对虚基类的子对象初始化()。

A、与虚基类下面的派生类个数有关

B、多次

C、两次

D、一次

标准答案:8

知识点解析:暂无解析

28、己知类X成功地重载了-、二、+、和口这几个运算符,则其中肯定属于成员函

数的运算符是()。

A、+和=

B、口和后置-

C、=和[]

D、前置-和口

标准答案:4

知识点解析:暂无解析

29、下面程序的结果为()。#include"iostream.h"voidchange(inta,intb){int

temp;temp=a:a=bb=temp:)voidmain()(intm,n;m=8;n=9:change(m,

n);cout<<m<<nH<<n<<endl;)

A、89

B、98

C、程序有错误

D、99

标准答案:1

知识点解析:暂无解析

30、关于成员函数特征的下述描述中,()是错误的,

A、成员函数一定是内联函数

B、成员函数可以重载

C、成员函数可以设置参数的默认值

D、成员函数可以是静态的

标准答案:1

知识点解析:暂无解析

31、如果一个类至少有一个纯虚函数,那么就称该类为()。

A、抽象类

B、虚基类

C、派生类

D、以上都不对

标准答案:1

知识点解析:暂无解析

32、在C++中,打开一个文件,就是将这个文件与一个()建立关联,关闭一个文

件,就是取消这种关联。

A、类

B、流

C、对象

D、结构

标准答案:2

知识点解析:暂无解析

33、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。

A、函数调用可以作为独立的语句存在

B、函数调用可以无返回值

C、函数调用町以出现在表达式中

D、函数调用可以作为一个函数的形参

标准答案:8

知识点解析:暂无解析

34、下列函数中,()是对文件进行写操作的。

A、get()

B、read()

C、seekg()

D、put()

标准答案:8

知识点解析:暂无解析

35、关于read。函数的下列描述中,正确的是()。

A、该函数只和来从键盘输入中获取字符串

B、该函数所获取的字符多少是不受限制的

C、该函数只能用于文本文件的操作中

D、该函数只能按规定读取所指定的字符数

标准答案:8

知识点解析:暂无解析

三、公共基础填空题(本题共5题,每题7.0分,共5

分。)

36、冒泡排序算法在最好的情况下的元素交换次数为【】。

标准答案:0

知识点解云:根据冒泡排序算法思想可知,若待排序的初始序列为“正序”序列,则

只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记

录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换

次数为0。

37、在最坏情况下,堆排序需要比较的次数为【】。

标准答案:O(nlog2n)

知识点解析:在最坏情况下,冒泡排序所需要的比较次数为n(n-l)/2;简单插入排

序所需要的比较次数为n(n・l)/2;希尔排序所需要的比较次数为O(nL5);堆排序所

需要的比较次数为O(nlog2ii)。

38、若串s="MathTypes”,则其子串的数目是[]。

标准答案:46

知识点解析:串s中共有9个字符,由于串中字符各不相同,则其子串中有0个字

符的1个(空串),1个字符的9个,2个字符的8个,3个字符的7个,4个字符的

6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个

字符的1个,共有1+2+3+4+5+6+7+8+9+1=46。

39、软件开发环境是全面支持软件开发全过程的【】集合。

标准答案:软件工具

知识点解析:暂无解析

40、美系数据库的美系演算语言是以【】为基础的DML语言。

标准答案:谓词演算

知识点解析:关系数据库中的关系演算包括元组关系演算和域关系演算。二者都是

由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。

四、填空题(本题共6题,每题7.0分,共6分。)

41、一个C++语言程序的开发步骤通常包括编辑、【】、链接、运行和调试。

标准答案:编译

知识点解析:C++语言程序开发的基本步骤是编辑、编译、链接、运行和调试。

42、若己知a=10,b=20,则表达式!aVb的值为【】。

标准答案:1

知识点解析:计算表达式!a<b,先计算!a,因a的值为10,!a的值为0。关系表达

式0V20为真,所以表达式!aVb的值为lo

43、友元类的所有成员函数都是另一个类的【】。

标准答案:友元函数

知识点解析:C++语言中友元类中的函数都是另一个类的友元函数。

44、表达式x.operator++()还可写成【】。

标准答案:++x

知识点解析:C++语言中用成员函数重载++x为x.operator++()用友元函数重载++x

为:operator++(x)

45、以下程序的输出结果是【】。#include<iostream.h>voidmain(){inta=0;

a+=(a=8);cout<<a:}

标准答案:16

知识点解析:解答本题的关键是要分析清楚表达式a+=(a=8)中,a的值己经被赋为

8,而不是0。

46、若要在C盘根目录下作为二进制文件打开文件test.dat,则应该用的语句是

标准答案:ifslreamfin('C:\test.dat",ios_binary);或ifsireamfin;fin.open(c:

\test.dat",ios_binary);

知识点解析:C++中打开文件有两种方式①ifstreamfin("test.dat");@ifstream

fin;fin.open("lesl.dat");,ios_binary的意义是以二进制文件打开。

fin.open(”test.dat");,ios_binary的意义是以二进制文件打开。

国家二级(C++)笔试模拟试卷第2套

一、公共基础选择题(本题共10题,每题1.0分,共

10分。)

1、数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构

进行的运算,以及

A、数据的存储结构

B、计算方法

C、数据映象

D、逻辑存储

标准答案:A

知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学

科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

2、串的长度是

A、串中不同字符的个数

B、串中不同字母的个数

C、串中所含字符的个数且字符个数大于零

D、串中所含字符的个数

标准答案:D

知识点解析:串的长度书的是串中的字符的个数,且其字符个数可以为零。

3、在计算机中,算法是指

A、加工方法

B、解题方案的准确而完整的描述

C、排序方法

D、查询方法

标准答案:B

知识点解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特

征:可行性、确定性、有穷性和拥有足够的情报。

4、以下不属于对象的基本特点的是

A、分类性

B、多态性

C、继承性

D、封装性

标准答案:c

知识点解析:对象有如下一些基本特点,即标识唯一性、分类性、多态性、封装性

和模块独立性。

5、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做

A、软件投机

B、软件危机

C、软件工程

D、软件产生

标准答案:B

知识点解析:软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软

件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成

本、质量、生产率等问题。

6、下面不属于软件设计原则的是

A、抽象

B、模块化

C、自底向上

D、信息隐蔽

标准答案:C

知识点解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计

中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽

和数据独立性。自底向上是集成测试中增量测试的一种。

7、开发大型软件时,产生困难的根本原因是

A、大系统的复杂性

B、人员知识不足

C、客观世界千变万化

D、时间紧、任务重

标准答案:A

知识点解析:软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件

时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格

而科学的管理。

8、下列SQL语句中,用于修改表结构的是

A、ALTER

B、CREATE

C、UPDATE

D、INSERT

标准答案:A

知识点解析:SQL语句中凡创建都用CREATE,删除都用DROP,改变用

ALTER,再跟类型和名字,附加子句。

9、数据库、数据库系统和数据库管理系统之间的关系是

A、数据库包括数据库系统和数据库管理系统

B、数据库系统包括数据库和数据库管理系统

C、数据库管理系统包括数据库和数据库系统

D、三者没有明显的包含关系

标准答案:B

知识点解析:数据库系统(DataBaseSystem,简称DBS)包括数据库(DataBase,简

称DB)、数据库管理系统(DataBaseManagementSystem,简称DBMS)、数据库管

理员、硬件和软件。

10、关系模型允许定义3类数据约束,下列不属于数据约束的是

A、实体完整性约束

B、参照完整性约束

C、域完整性约束

D、用户自定义的完整性约束

标准答案:C

知识点解析:关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整

性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支

持,刻于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用

户利用该语言给出约束条件,运行时由系统自动检查。

二、选择题(本题共25题,每题1.0分,共25分。)

11、下列关于C++语言类的描述中错误的是

A、类用于描述事物的属性和对事物的操作

B、类与类之间通过封装而具有明确的独立性

C、类与类之间必须是平等的关系,不能组成层次结构

D、类与类之间可以通过一些方法进行通信和联络

标准答案:C

知识点露析:C++语言中的类是可以组成层次结构的,类是用于描述事物的属性

和对事物的操作,类与类之间有相对的独立性,但其可以通过一些方法进行信息的

通信。

12、在C++语言中,表示一条语句结束的标号是

A、#

B、;

c、//

D、)

标准答案:B

知识点解析:C++语言中语句的结束符是分号。

13、以下叙述中正确的是

A、构成C++语言程序的基本单位是类

B、可以在一个函数中定义另一个函数

C、main()函数必须放在其他函数之前

D、所有被调用的函数一定要在调用之前进行定义

标准答案:A

知识点解析:关于C++语言,我们应该了解以下必须要掌握的基础知识:①C++

程序是由类构成的。②一个函数由两部分组成:函数的首部和函数体。③一个类由

两部分组成:类成员变量和类成员函数。④一个C++程序总是从main函数开始执

行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,

也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。⑤C++程序

在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行

上。每个语句和数据定义的最后必须有一个分号。⑥可以用/*……*/和〃对C++

语言的程序的任何部分作注释。

14、已知有定义:constintD=5;inii=1;doublef=0.32;charc=15;则下列选项错

误的是

A、++i;

B、D——;

C、c++;

D、一一f;

标准答案:B

知识点解析:一一”运算符不能用于常量.

15、以下程序的输出结果是#include<iostream.h>voidreverse(inta[]»intn)int

i,t;fdr(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1—i];a[n-1—i]=t;)}voidmain()

{intb[10]={1,2,3,4,5,6,7,8,9,10);inti,s=0;reversed,8);for(i=6;i<10;i++)s+=

b[i];cout<<S;)

A、22

B、10

C、34

D、30

标准答案:A

知识点解析:在main函数中,调用reverse函数将•b数组中的前8个成员进行互

置,执行完毕后,b数组中的成员为{8,7,654,3,2,1910},在执行for循环结构

后,Wb[6],b[7]……b[9]的值相加,结果为1+2+9+10=22。注意:在计算累加

和时,应将累加变量赋值为零。

16、下面程序的功能是e316表示为两个加数的和,使两个加数分别能被13和II

整除,在下画线处应填入的选项是#inckide<iostream.h>Voidinain(){inti=Oj,k;

do{i++;k=316—13*i;}while();j=k/l1;cout<<"316=13*H<<i<<

"+11*"<<j;}

A、k/11

B、k%ll

C、k/ll=0

D、k%U=0

标准答案:B

知识点解析:do…while语句的一般形式是do{语句}while(表达式);特点是:“直到

型''循环结构。先执行一次“语句”,判“表达式”,当“表达式”为非0,再执行“语

句”,直到“表达式”的值为。时停止执行语句。在一•般情况下,用while和

do…while语句解决同一问题时,若二者的循环体剖分是一样的,它们的结果乜一

样。但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因

为此时while循环的循环不被执行,而do…while循环的循环体被执行一次。本题

的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当

k%ll的值为0时,则不必执行循环,将执行j=k/ll语句,输出结果,所以该表达

式合理的条件是k%llo

17、设有数组定义:chararrayl]="China";,则数组array所占的空间为

A、4个字节

B、5个字节

C、6个字节

D、7个字节

标准答案:C

知识点解析:在给数组赋值时,可以用一个字符串作为初值,这种方法直观、方

便,而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意。

因为字符串常量的最后由系统加上一个‘\0',因此,上面的初始化与下面的等价:

Chararray11=

18、若已定义:而@口={0/23,45678,9},5{^=@」;其中00运9,则对&数组元素

不正确的引用是

A、a[p-a]

B、*(&a[l])

C、p|l]

D、a[10]

标准答案:D

知识点解析:通常,引用一个数组元素可以用下标法,如a[p—a]形式,或指针

法,如*(&a[i])的形式。本题中a⑼=9,a[10]显然超出了数组范围,注意,数

组的下标是从0开始的。

19、以卜,程序的输出结果是#includeViostream.h>voidmain(){inix=l,y=3;coul

<<x++<<{intx=0;x+=y*2;cout<<x<<T<<y<<n;';)

cout<<x<<<<y;)

A、1,6,3,1,3

B、1,6,3,6,3

C、1,6,323

D、1,7,323

标准答案:C

知识点解析:在coutVVx++;语句中,程序先输出x的值,然后再加1,所以

结果为1,此时x的值为2;在亩"=0送+=丫*2;语句中,将0的值赋给x,然后

运算x+=y*2的值,结果为x=6(此时x的值为局部变量),y的值不变,最后执

行了x语句后的值,所以应为2。

20、函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+

num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}return

num;)

A、字符串a的长度

B、字符串b的长度

C、字符串a和b的长度之差

D、字符串a和b的长度之和

标准答案:D

知识点解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个

循环,将字符串a和b相连,最后返回连接后的总长度。

21、下面程序输出的结果是#include〈iostream.h>voidmain(){inti;inta[3][3]=

{1,2,3,4,5,6,7,8,91;for(i=0;iV3;i++)cout<<a[2-i][i]<<"}

A、159

B、753

C、357

D、591

标准答案:B

知识点解析:首先,当i=0时,数组中的位置是批2][0]=7,当然,如果用排除

法的话,就不用考虑后面的循环了,因为在4个选项中,第1个数为7的选项只有

B)o本题执行第2次循环时,i的值为1,则cout函数中的数组指向为=

5,依次循环,可求出答案。

22、F面程序的结果为#include<iostream.h>intc;classA{private:inta;staticint

b;public:A(){a=0;c=0;}voidseta(){a++;}voidsetb(){b++;}voidsetc(){c+

+;)voiddisplay(){cout<<a<<M11<<b<<nH<<c;}};intA::b=0;

voidmain()(Aal,a2;al.scta();al.setb();al.sctc();a2.seta();a2.sctb();

a2.setc();a2.display();}

A、121

B>122

C、112

D、222

标准答案:B

知识点解析:C++语言中全局变量是任何函数都可以改变的量,静态变量的有效

范围在定义它的类中,而普通的变量的有效性只在使用它的函数中,在本题中c为

全局变量,b为静态变量,a为普通变量,b和c在类A的对象al和s2中都自加

lo所以b、c为2,a为1。

23、下列描述中哪个是正确的?

A、私有派生的子类无法访问父类的成员

B、类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类

A的成员对类C是不可访问的

C、私有派生类不能作为基类派生子类

D、私有派生类的所有子孙类将无法继续继承该类的成员

标准答案:B

知识点解析:C++语言中一个派生类能不能继承基类的所有数据成员受继承方式

的限制。

24、下列关于构造函数说法不正确的是

A、构造函数必须与类同名

B、构造函数可以省略不写

C、构造函数必须有返回值

D、在构造函数中可以对类中的成员进行初始化

标准答案:C

知识点解析:构造函数是一类特殊的函数,其特点是函数名与类同名,没有返回

值,也可以省略不写,还可以对类中的成员进行初始化。

25、如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是

A、一元运算符

B、二元运算符

C、选项A)和选项B)都可能

D、重载错误

标准答案:D

知识点解析•:C++中用友元函数重载运算符至少有一个参数,重载一目运算符要

有一个参数,重载二目运算符要有两个参数。

26、在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是

A、一元成员运算符

B、二元成员运算符

C、一元友元运算符

D、选项B)和选项C)都可能

标准答案:D

知识点解析:C++语言中用成员函数重载时,重载一目运算符没有参数,重载二

日运算符要有一个参数。

27、下列关于模板的说法正确的是

A、模板的实参在任何时候都可以省略

B、类模板与模板类所指的是同一概念

C、类模板的参数必须是虚拟类型的

D、类模板中的成员函数全部都是模板函数

标准答案:D

知识点解析:在C++中规定,如果一个类被声明为类模板,那么其中的所有成员

函数就都成为了模板函数。

28、表示在输出时显示小数位,以及在文件输入时判断文件尾的函数分别是

A、showbase()和eof()

B、showpoint()fOeof()

C^showpoint()和bad()

D、showpoint()和good()

标准答案:B'

知识点解析:表示在输出时显示小数位,以及在文件输入时判断文件尾的函数分别

是showpoini()和eof()o

29、下面程序段的运行结果是vo是main(){intt,a,b,C;a=l;b=2;C=2;while(a<

b<c)(t=a;a=b;b=t;c——;)cout<<a<<<<b<<<<C;)

A、1,2,0

B、2,1,0

C、1,2,1

D、2,1,1

标准答案:A

知识点解析:本题中(a<bVc)的运算次序是先算aVb,返回I,再运算IVc,返

回1,所以表达式aVbVc的值为1。

30、下列程序中下画线处应填入的语句是classBase{public:voidfun(){cout<<

"Baseoffun"<<endl;)};classDerived:publicBase{voidfun(){〃显示卷类

的成员函数funcout<<"Derivedoffun"<<endl;});

A^fun();

B、Base.fun();

C、Base::fun();

D^Base—>fun();

标准答案:C

知识点解析:如果在子类中要访问父类的函数应用七:“运算符。

31、若定义intk=7,x=12;,则能使值为3的表达式是

A^x%=(k%=5)

B、x%=(k-k%5)

C、x%=k-k%5

D、(x%=k)-(k%=5)

标准答案:D

知识点解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是

x%=k等价于x=x%ka

32、在位运算中,操作数每右移一位,其结果相当于

A、操作数乘以2

B、操作数除以2

C、操作数乘以4

D、操作数除以4

标准答案:B

知识点解析:右移运算符“>>”是双目运算符。其功能是把左边的运算数

的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设a=15,a

>>2表示把000001111右移为00000011(十进制3)。

33、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。

则不能把节点b连接到节点a之后的语句是structnode{chardata;stmctnode*

next;)a,b,*p=&a,*q=&b;

A、a.next=q;

B、p.next=&b;

C、p—>next=&b;

D、(*p).next=q;

标准答案:B

知识点解析:要把节点h连接到节点a之后.必须把h的地址给a的next指针,选

项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该

是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b

的地址,所以正确。

34、一个类的友元函数能够访问该类的

A、私有成员

B、保护成员

C、公有成员

D、所有成员

标准答案:D

知识点解析:一个类的友元函数对类成员的访问能力等同于类的成员函数,即能访

问类的所有成员。

35、下面程序的输出结果是#include<iostream.h>#include<slring.h>voidmain()

{charpl[10],p2[10];strcpy(pl,"abc");strcpy(p2,,'ABC");charstr[5O]="xyzn;

strcpy(str+2,strcat(p1,p2));cout<<str;}

A、xyzabcABC

B、zabcABC

C、xyabcABC

D、yzabcABC

标准答案:C

知识点解析:该函数的调用方式是strcpy(字符数组,字符串),其中“字符串”可以

是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”

中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够

大,以便容纳复制过来的字符串。复制时,连同结束标志为0'一起复制。②不能用

赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处

理。strcat(字符数组,字符串)的功能是把“字符串”连接到“字符数组”中的字符串

尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志被“字符串”的第一个

字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检

查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;

否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志'\0',连接后

“字符数组,,中存储的字符串的结束标志,\0,被舍弃,只在目标串的最后保留一

三、公共基础填空题(本题共5题,每题1.0分,共5

分。)

36、算法的基本特征是可行性、确定性、和拥有足够的情报。

标准答案:有穷性

知识点解析:算法是指解题方案的准确而完整的描述。它有4个基本特征,分别是

可行性、确定性、有穷性和拥有足够的情报。

37、在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为

标准答案:log2n

知识点解析:对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较

log2n次,而顺序查找需要比较n次。

38、在面向对象的程序设计中,类描述的是具有相似性质的一组______。

标准答案:对象

知识点解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共

同方法的对象的集合。

39、通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为

标准答案:软件生命周期

知识点解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期

都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付

使用及维护等活动。

40、数据库管理系统常见的数据模型有层次模型、网状模型和3种。

标准答案:关系模型

知识点解析:数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是

一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,

可以分为层次模型、网状模型和关系模型。

四、填空题(本题共〃题,每题1.0分,共〃分。)

41、执行语句序列charstr1[10]="ABCD",str2[10]="XYZxyzn;for(int

i=0;sm[i]=str2[iN++);后,数组strl中的字符串是_____。

标准答案:XYZxyz

知识点解析:注意for的循环体为空语句,其第二个表达式为一个赋值语句而不是

一个逻辑表达式语句。因此,f。「循环的作用实际上是将st己的字符逐个赋值给

strl中的对应位置。

42、下列程序的执行结果是o#include<lostream.h>inta;intsum_a(void)

{a=a+5;returna;}voidmain(void){a=a+sum_a();cout<<a<<endl;}

标准答案:10

知识点解析:本题考查全局变量的使用。全局变量被系统默认初始化为0,故在执

行户a+sum-a();语句时,首先执行sum_a函数,将a的值改变为5,该函数的返

回值也是5,故最后a的值被赋值为10。

43、根据输出结果填空完成下面程序。#inckide<iostream.h>classTest{private:

staticintval;inta;public:staticintfunc();voidsfunc(Test&r);};〃初始化静态

变量valintTesl::func(){returnval++;)voidTest::sfunc(Test&r){r.a=!25;cout<<

"ResultS-1<<r.a;}voidmain(){cout<<"Resultl="<<Test::func()<<endl;Test

A;cout<<"Result2=n<<A.fune()<<endl;A.sfunc(A);}输出结果为:

Result1=201Resuit2=202Rcsult3=125

标准答案:intTest::val=200;

知识点解析:类的静态成员变量必须要进行初始化才能使用,初始化时需要用域限

定符::指明该变量所属的类名。

44、下列程序的运行结果是o#inc)ude<iostream.h>classtest{private:int

hum;public:tcst();intTEST(){returnnum+100;)〜tcst();};test::test(){num=0;)

test::test(){cout<<"Destructorisactive"<<endl;)voidmain(){testx|3|;cout<

<x[l].TEST()<<endl;)

标准答案:100DestructorisactiveDestructorisactiveDestructorisactive

知识点解析:本题比较简单,考查考生基本的类的定义,构造函数以及对象数组的

概念。

45>请将下列类定义补充完整。classBase{public:voidfun(){cout<<"Base::fun"<

<endl;}};classDerived:publicBase{public:voidfun(){〃显式调用基类的

fun函数coutVV"Derived::fun"VVendl;)};

标准答案:Base::tun();

知识点解析:本题考核虚基类。作用域分辨符号是‘它可以用来限定要访问的

成员所在的类的名称。一般来说,在派生类中对基类成员的访问应该是唯一的。但

是,多继承情况下可能造成对基类中某个成员的访问出现不唯一的情况,通过使用

对象作用域分辨符可以解决这种对基类成员访问的二义性问题。

46有以下程序:#inckide<iostream.h>classA{intx;public:A(inta){x=a;}

friendclassB;};ClassB{public:voidprint(Aa){a.x-cout<<a,x<<endl;}};void

main(){Aa(10);Bb;b.print(a);)程序执行后的输出结果是______

标准答案:9

知识点解析:本题考核友元类的应用。在程序中,类B是类A的友元类,因此,

在类B的所有成员函数中均可访问类A的任何成员。在main()中,先定义类A的

一个对象a(10)和类B的一个对象bo然后通过对象b调用其成员函数print输出对

象a的私有成员x的值减1即9。

47、下列程序编译时发现pb->f(10);语句出现错误,其原因是______oinclude

<iostream.h>classBase(public:voidf(intx){cout<<"Base:',<<x<<endl;));

classDcrived:publicBase{public:voidf(char*str){cout<<"Derived:H<<str<<

endl;));voidmain(void){Derived*pd=newDerived;Pd->f(10);}

标准答案:数据类型不匹配

知识点解析:pd为派生类Derived的指针,指向派生类的成员函数f(char*Str),不

指向基类的f(intx)o

48下列程序的运行结果是______o#include<iostream.h>classSomeClass

{public:SomeClass(intvalue){somevalue=value;);voidshow_data(voiD))cout<<

data<<<<some_value<<endl;};staticvoidset_data(intvalue){data=value;);

private:staticintdata;intsome_value;);intSomeClass::data=0;voidmain(void)

{SomeClassmy_class(1001),your_class(2002);your_class.set_data(4004);

my_class.show_data();}

标淄答案:40041001

知识点解析:本题考查静态成员变量在不同对象间的共享现象。无论哪个对象修改

了其静态变量的值,其他对象再访问该变量时已经发生了变化。

49、有以下程序:included<iostream>usingnamespacestd;classBase{public:

Base(){x=0;}intx;};classDerived!:virtualpublicBase{public:Derived1()

{x=10;});classDerived2:virtualpublicBase{public:Derived2(){x=20;)};class

Derived:publicDerivedLprotectcdDerived2();intinain()(Derivedobj;cout<<obj.

x<<endl;return0;)该席序运行后的输出结果是。

标准答案:20

知识点解析:本题考核虚基类。本题中,虽然Derived1和Derived2都是由共同的

基类x派生而来的,但由于引入虚基类,使得它们分别对应基类的不同副本。这时

数据成员x只存在一份拷贝,不论在类Derired1中修改,还是在类Derived2中修

改,都是直接对这唯一拷贝进行操作。本题程序执行语句“Derivedobj;"时,就会先

调用虚基类Base的构造函数,使得x=0,然后执行类Derived1的构造函数使得

x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。

50、下列程序对加号进行了重载,划线部分的语句是。#include<iostream.h

>#include<math.h>classTriangle{intx,y,z;doublearea;public:Triangle(inti,int

j,intk){doubles;x=i;y=j;z=k;s=(x+y+z)/2.0;area=sqrt(s*(s-x)*(s-y)*(s-z));}void

disparea(){cout<<"Area=H<<area<<endl;}frienddoubleoperator+(Triangle

tl,Trianglet2){));voidmain(){Triangletl(3,4,5),t2(5,12,13);doubles;cout

dispareaf);cout<<"t2:";t2.disparea();$=tl+t2:coutVV"总面积:="<

<s<<endl;)

标准答案:returntl.area+t2.area;

知识点解析:符号重载时往往采用的方法是对对象中的每个成员分别处理,封装之

后体现出对象参与运算的现象。

51、在C++语言中,访问一个对象的成员所用的运算符是,访问一个指

针所指向的对象的成员所用的运算符是。

标准答案:成员选择运算符(或”.");成员访问运算符(或“一>”)

知识点解析:本题考查的是使用对象和对象指针访问成员所使用的符号的不同,考

生请注意它们的区别。

国家二级(C++)笔试模拟试卷第3套

一、公共基础选择题(本题共10题,每题7.0分,共

10分。)

1、下列选项中,不是算法的基本特征的是()。

A、完整性

B、可行性

C、有穷性

D、拥有足够的情报

标准答案:A

知识点解析:作为一个算法,一般应该具有下列4个特征:①可行性,即考虑到

实际的条件能够达到一个满意的结果;②确定性,算法中的第一个步骤都必须是

有明确定义的;③有穷性,一个算法必须在有限的时间内做完;④拥有足够的情

报。

2、结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。

A、对象

B、数据结构

C、数据流

D、目标

标准答案:C

知识点解析:结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、

逐步求精,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的

逻辑模型。

3、下列工具中为需求分析常用工具的是()。

A、PAD

B、PFD

C、N-S

D、DFD

标准答案:D

知识点解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判

定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工

具,不是需求分析的工具。

4、线性表进行二分法检索,其前提条件是()。

A、线性表以顺序方式存储,并按关键码值排好序

B、线性表以顺序方式存储,并按关键码的检索频率排好序

C、线性表以链式方式存储,并按关键码值排好序

D、线性表以链式方式存储,并按关键码的检索频率排好序

标准答案:A

知识点解析:对线性表进行二分法检索,要求线性表是按顺序方式存储,并按关键

码值的大小排好序,而不是按关键码的检索频率排序。

5、下列选项中不属于结构化程序设计方法的是()。

A、自顶向下

B、逐步求精

C、模块化

D、可复用

标准答案:D

知识点解析:结构化程序设计的主要原则概括为自顶向下,逐步求精,限制使用

GOTO语句。

6、下列关于结构化程序设计原则和方法的描述中,错误的是()。

A、选用的结构只准许有一个入口和一个出口

B、复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C、不允许使用GOTO语句

D、语言中所没有的控制结构,应该采用前后一致的方法来模拟

标准答案:C

知识点解析:限制使用GUI。语句是结构化程序设计的原则和方法之一,但不是

绝对不允许使用GOTO语句。选项A)、B)、D)为结构化程序设计的原则。

7、软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需

求规格说明书以及()。

A、阶段性报告

B、需求评审

C、总结

D、都不正确

标准答案:B

知识点解析:需求分析是软件定义时期的最后一个阶段。可以概括为4个方面:

①需求获取:②需求分析;③编写需求规格说明书;④需求评审。

8、下列关于软件测试的描述中正确的是()。

A、软件测试的目的是证明程序是否正确

B、软件测试的目的是使程序运行结果正确

C、软件测试的目的是尽可能多地发现程序中的错误

D、软件测试的目的是使程序符合结构化原则

标准答案:C

知识点露斤:软件测试是为了尽可能多地发现程序中的错误,尤其是至今尚未发现

的错误。

9、用链表表示线性表的优点是()。

A、便于随机存取

B、花费的存储空间较顺序存储少

C、便于插入和删除操作

D、数据元素的物理顺序和逻辑顺序相同

标准答案:C

知识点解析:在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费

的存储空间比顺序表还要多。在插入和删除数据元素时,只需要移动相应的记录指

针即可。在链表中,数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现

对数据的指定,所以不能进行随机存取。

10、在数据库设计中,将E-R图转换为关系模式的过程属于()。

A、需求分析阶段

B、逻辑设计阶段

C、概念设计阶段

D、物理设计阶段

标准答案:B

知识点解析:数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设

计。其中逻辑设计的主要工作是将E-R图转换为关系模式。

二、选择题(本题共25题,每题J.0分,共25分。)

11、下列符号中可以用作C++标识符的是()。

A^_radius

B、foo〜bar

C、else

D、3room

标准答案:A

知识点解析:此题考查的是标识符c标识符是由数字、字母以及下划线构成,其第

一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于

编译系统的限制一般不超过31个字符:标识符中的大小写字母是不同的;定义标

识符时不能采用系统的保留字。符合这些要求的只有选项A)o

12、下列关于C++流的说明中,正确的是()。

A、与键盘、屏幕、打卬机和通信端口的交互都可以通过流类来实现

B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作

C、cin是一个预定义的输出流类

D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象

标准答案:A

知识点解析:选项B)中,从流中获取数据的操作称为提取操作,向流中添加数据

的操作称为插入操作;选项C)中,cin是一个预定义的输入流对象;选项D)中,

open的成员函数只能打开文件:故只有选项A)的叙述是正确的。

13、若执行语句:Vendl后将

输出()。

A、*******1230K

123********OK

C、wwww***]23KHw*十*OK

D、123*******Q[^********

标准答案:A

知识点解析:cout.fin。用于设置或返回输出的填充字符,默认是空格,mi。函数的

设置一直有效,直到下一个fill。函数改变该值为止。setw(intn)作用是设置输入输

出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽

度设置自动恢复为0。需要注意的是,默认为输出数据在指定宽度内右对齐。

14、类模板的使用实际上是将类模板实例化成一个具体的()。

A、类

B、对象

C、函数

D、模板类

标准答案:A

知识点解析:类模板就是把类中的数据分离出来,作为一个类的描述。C++编译器

根据类模板和特定的数据类型来产生一个类,类模板就是一个抽象的类。

15>有如下函数模板定义:template<classT>Tfunc(Tx,Ty){returnx*x+y*y:)在

下列对func的调用中,错误的是()。

A、func(3,5);

func(3.0,5.5);

C、func(3,5.5);

D、func<int>(3,5.5);

标准答案:C

知识点解析:选项C)中两个实参的实际类型不同而未进行转换,会出现错误。

16、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,

并返回相加结果,则该成员函数的声明语句为()。

A、ABoperator+(AB&a,AB&)

B、ABoperator+(AB&)

C>opetacor+(ABa)

D、AB&operator+()

标准答案:B

知识点解析:因为题目的要求是对类AB定义加号操作符重载成员函数,所以首先

应该对范围加以限定,参数是对类对象的引用。

17、下列运算符中全都可以被友元函数重载的是(),

A、=>+,-,\

B、[]»+,(),new

C、->,+,*,>>

D、<<,>>,+,*

标准答案:D

知识点解析:运算符重载为成员函数的形式为:函数类型。perator运算符(形参

表){函数体;}:运算符重载为友元函数的形式为:friend函数类型。perator运算符

(形参表){函数体;)。一般来讲,单目运算符最好重或为成员函数,双目运算符最好

重载为友元函数。=、[]、0、->以及所有的类型转换运算符只能作为成员函数重

载。

18、关于纯虚函数,下列表述中正确的是()。

A、纯函数是没有给出实现版本(即无函数体定义)的虚函数

B、纯虚函数的声明总是以“=0”结束

C、派生类必须实现基类的纯虚函数

D、含有纯虚函数的类不可能是派生类

标准答案:B

知识点解析:纯虚函数是在声明虚函数时被“初始化''为。的虚函数。纯虚函数没有

函数体,所以选项A)、C)不正确。纯虚函数的作用是在基类中为其派生类保留一

个函数名字。所以选项D)错误。

19、有如卜程序:#include<iostream>usingnamespacestd;classTestCl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论