全国计算机等级《二级C++ 》押题卷.docx

上传人:b****7 文档编号:26117785 上传时间:2023-06-17 格式:DOCX 页数:29 大小:26.68KB
下载 相关 举报
全国计算机等级《二级C++ 》押题卷.docx_第1页
第1页 / 共29页
全国计算机等级《二级C++ 》押题卷.docx_第2页
第2页 / 共29页
全国计算机等级《二级C++ 》押题卷.docx_第3页
第3页 / 共29页
全国计算机等级《二级C++ 》押题卷.docx_第4页
第4页 / 共29页
全国计算机等级《二级C++ 》押题卷.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

全国计算机等级《二级C++ 》押题卷.docx

《全国计算机等级《二级C++ 》押题卷.docx》由会员分享,可在线阅读,更多相关《全国计算机等级《二级C++ 》押题卷.docx(29页珍藏版)》请在冰豆网上搜索。

全国计算机等级《二级C++ 》押题卷.docx

全国计算机等级《二级C++》押题卷

全国计算机等级《二级C++》预测试卷

(一)

一、单项选择题(共40题,合计40分)

1有下列程序:

#include

intb=2:

intfun(int*k)

{b=*k+b;return(b);}

voidmain()

{inta[1O]={1,2,3,4,5,6,7,8},i;

for(i=2;i<4;i++){b=fun(&a[i])+b;printf

("%d",b);}

printf("\n");

}

程序运行后的输出结果是(  )。

A. 1012

B. 810

C. 1028

D. 1016

[正确答案]C

试题解析:

在程序中子函数fun(int*k)的作用是给静态全局变量加上形参*k的值。

在主函数中进行第一次for循环执行时,fun(&a[2])的返回值为5,所以5+5=10,因而输出结果为10,第二次for循环执行时。

fun(&a[3])的返回值为14,所以14+14=28。

2下列关于栈叙述正确的是(  )。

 

A.栈顶元素最先能被删除 

B.栈顶元素最后才能被删除 

C.栈底元素永远不能被删除 

D.以上三种说法都不对 

[正确答案]A

试题解析:

栈是限定在一端进行插入删除的先入后出的线性表数据结构,栈顶元素最后被插入到栈中,但是最先被删除;而栈底元素最先被插入,最后被删除。

 

3若变量已正确定义,有下列程序段

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(C!

=a)C=b;

printf(”%d,%d,%d\n”,a,b,c);

其输出的结果是(  )。

A. 程序段有语法错

B. 3,5,3

C. 3,5,5

D. 3,5,7

[正确答案]B

试题解析:

如果if判断条件成立时就执行其后的相关语句,否则不执行,第一个if条件a>b不成立,故不执行“a=b”,接着执行“c=a”,把a的值赋给c后,此时第二个if条件不成立,故不执行其后语句,最终点c的值为3。

4若已定义

inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;

则对数组元素不正确的引用是(  )。

A. a[p-a]

B. *(&a[i])

C. p[i]

D. *(*(a+i))

[正确答案]D

试题解析:

数组和指针的关系非常密切,因为数组名称单独使用是表示数组的首地址。

故可用的表示可能是a[i],p[i],*(P+i),同样&(a[i])表示地址,因此*(&a[i])等同于a[i]。

本题答案为D。

5数据的存储结构是指(  )。

A. 数据所占的存储空间

B. 数据的逻辑结构在计算机中的存放形式

C. 数据在计算机中的顺序存储方式

D. 存储在计算机外存中的数据

[正确答案]B

试题解析:

数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。

数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

6设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为(  )。

A. 课号、成绩

B. 学号、成绩

C. 学号、课号

D. 学号、姓名、成绩

[正确答案]C

试题解析:

关键字是指属性或属性的组合,其功能是唯一地标识一个元组或数据,而SC中学号和课号的组合可以对元组进行唯一的标识。

7结构化程序所要求的基本结构不包括(  )。

A. 顺序结构

B. GOT0跳转

C. 选择(分支)结构

D. 重复(循环)结构

[正确答案]B

试题解析:

结构化程序设计的3种结构是,顺序、分支和循环,不包括goto跳转,它只是分支结构的一种,也是一个关键字

8以下选项中合法的实型常数是(  )。

 

A.5E2.0 

B.E—3 

C.2EO 

D.1.3E 

[正确答案]C

试题解析:

本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必须为整数。

由于符号E前面必须有数字。

D在指数符号后面没有数字,是错误的。

 

9下列叙述中,不属于软件需求规格说明书的作用的是(  )。

A. 便于用户、开发人员进行理解和交流

B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据

C. 作为确认测试和验收的依据

D. 便于开发人员进行需求分析

[正确答案]D

试题解析:

使用软件需求规格说明书的目的是便于用户、开发人员进行理解和交流,它能够反映出用户问题的结构,可以作为软件开发工作的基础和依据,而且可以作为确认测试和验收的依据。

它是需求分析的结果,而不是为了便于开发人员进行需求分析。

因此答案是选项D。

10若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是(  )。

 

A.m[--i] 

B.m[2*2] 

C.m[m[o]] 

D.m[m[i]] 

[正确答案]D

试题解析:

数组的下标是从零开始的。

一维数组的一般定义方式为数型说明符数组名[常置表达式] 

其中“[]”中的内容可以是整型数量,也可以是整型表达式。

选项C中,m[0]=5,m[m[o]]=m[5],数组下标越界。

 

11结构化程序所要求的基本结构不包括(  )。

 

A.顺序结构 

B.GOT0跳转 

C.选择(分支)结构 

D.重复(循环)结构 

[正确答案]B

试题解析:

结构化程序设计的3种结构是,顺序、分支和循环,不包括goto跳转,它只是分支结构的一种,也是一个关键字。

 

12下列数据模型中,具有坚实理论基础的是(  )。

 

A.层次模型 

B.网状模型 

C.关系模型 

D.以上3个都是 

[正确答案]C

试题解析:

关系模型较格式化模型(网状模型和层次模型)有以下几个优点:

数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。

 

13有如下程序:

#include

usingnamespacestd;

classVAC{

public;

intf()const(return3;}

intf(){return5;}

};

Intmain(){

VACv1:

constVACv2;

cout<

return0;

}

运行时的输出结果是()。

A. 53

B. 35

C. 55

D. 33

[正确答案]A

试题解析:

本题考查常成员函数的应用。

VAC类中说明了两个函数,一个是常成员函数,一个是普通函数;在主函数中说明了两个对象,通过普通对象v1调用的是普通函数,输出5;通过常对象v2调用的是常成员函数,输出3。

14下列有关模板的叙述中,正确的是(  )。

A. 函数模板不能含有常规形参

B. 函数模板的一个实例就是一个函数定义

C. 类模板的成员函数不能是模板函数

D. 用类模板定义对象时,绝对不能省略模板实参

[正确答案]B

试题解析:

本题考查的是模极的概念。

函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信患渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。

15在函数中,可以用aut0、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是(  )。

A. auto

B. extern

C. Register

D. static

[正确答案]A

试题解析:

变量在使用之前其数据类型必须加以说明,而存储类型则可默认说明或显式说明。

显式说明指直接在变量说明前加上存储类型标志,如auto,register,static,extern等。

关键字auto通常省略。

16下列关于函数模板的描述中,正确的是(  )。

A. 函数模板是一个实例函数

B. 使用函数模板定义的函数没有返回类型

C. 函数模板的类型参数与函数的参数相同

D. 通过使用不同的类型参数,可以从函数模板得到不同的实例函数

[正确答案]D

试题解析:

函数模板只是声明,一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型参数标识符之后,才能产生真正的函数。

17下列关于文件流的描述中,正确的是(  )。

A. 文件流只能完成针对磁盘文件的输入、输出

B. 建立一个文件流对象时,必须同时打开一个文件

C. 若输入流要打开的文件不存在,将建立一个新文件

D. 若输出流要打开的文件不存在,将建立一个新文件

[正确答案]C

试题解析:

输入流要打开的文件不存在,则会自动建立该文件,而输出流要打开的文件不存在,则会报错,而不会新建一个文件。

18下列说法正确的是(  )。

A. 内联函数在运行时将该函数的目标代码插入每个调用该函数的地方

B. 内联函数在编译时将该函数的目标代码插入每个调用该函数的地方

C. 类的内联函数必须在类体内定义

D. 类的内联函数必须在类体外通过加关键字inline定义

[正确答案]B

试题解析:

本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加in-line关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。

19有下列程序:

#include

voidmain(  )

{FILE*pf;

char*s1="China",*s2="Beijing";

pf=fopen("abc.dat","wb+");

fwrite(s2,7,1,pf);

rewind(pf);/*文件位置指针回到文件开头*/

fwrite(s1,5,1,pf);

fclose(pf);

}

以上程序执行后abc.dat文件的内容是(  )。

A. China

B. Chinang

C. ChinaBeijing

D. BeijingChina

[正确答案]B

试题解析:

本题考查fwrite的调用形式。

其格式为“fwrite(buffer,size,count,fp);”。

fwritie函数的功能是对fp所指向的文件存入count次,每次存入一个大小为size的数据块。

将存入的数据块存到buffer指向的内存区,如果buffer内存区有数据则将其覆盖。

本题中第一次调用fwrite函数,向文件中写入s2的值“Beijing”,第二次调用fwrite函数,向文件中写入S1的值“China”,并将之前“Beijing”的前几个字符覆盖,得到Chi-nang。

20下列叙述中正确的是(  )。

A. 在面向对象的程序设计中,各个对象之间具有密切的关系

B. 在面向对象的程序设计中,各个对象都是公用的

C. 在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小

D. 上述三种说法都不对

[正确答案]C

试题解析:

面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系

21设有定义语句int(*f)(int);,则下列叙述正确的是(  )。

A. f是基类型为int的指针变量

B. f是指向函数的指针变量,该函数具有一个int类型的形态

C. f是指向int类型一维数组的指针变量

D. f是函数名,该函数的返回值是其类型为int类型的地址

[正确答案]B

试题解析:

定义语句int(*f)(int)中f是指向函数的指针变量,该函数中也只有一个int型的形参。

22为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是(  )。

A. +

B. =

C. <<

D. ++

[正确答案]B

试题解析:

赋值运算符只能作为重载函数的成员函数,其他运算符都可以作为友元函数重载。

23为了提高函数调用的实际运行速度,可以将较简单的函数定义为(  )。

 

A.内联函数 

B.重载函数 

C.递归函数 

D.函数模板 

[正确答案]A

试题解析:

内联函数一般是程序代码少于10行的函数,在编译过程中,直接在调用点处被展开,不会因函数调用带来巨大的系统开销,因此能提高实际运行速度。

24下列叙述中错误的是(  )。

A. gets函数用于从终端读入字符串

B. getchar函数用于从磁盘文件读入字符

C. fputs函数用于把字符串输出到文件

D. fwrite函数用于以二进制形式输出数据到文件

[正确答案]B

试题解析:

本题考查的是c语言中输入、输出函数的使用,gets和getchar函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。

25下列程序的执行结果是(  )。

#include

classSample

{

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a;y=b;}

~Sample()

{

if(x==y)

cout<<"x=y"<

else

cout<<"x!

=y"<

}

voiddisp()

{

cout<<"x="<

};

voidmain()

{

Samples1(2,3);

s1.disp();

}

A. x=2,y=2

B. x=3,y=3

C. x=2,y=3

D. x=3,y=2

[正确答案]C

试题解析:

本题考查类的构造函数和析构函数。

首先,Samplesl(2,3);会调用含有两个参数的构造函数Sam-ple(inta,intb){x=a;y=b;),disp()函数输出成员变量x和y的值x=2,y=3;然后结束时调用析构函数。

因为x和y值不等,故输出X!

=Y。

26有如下程序:

#included

usingnamespqcestd;

classTestClass

{

private;

charC;

public;

TestClass(charn):

c(n){}

~TestClass()

{

cout<

}

};

classTestClassl:

publicTestClass

{

private:

charC;

public:

TestClassl(charn):

TestClass(n+1),c(n){}~TestClassl()

{

cout<

}

};

intmain()

{

TestClasslobj('X');

return0;

}

执行上面的程序将输出(  )。

A. xy

B. yx

C. X

D. y

[正确答案]A

试题解析:

本题中FestClass为基类,TestClass1为派生类。

在主函数中定义TestClassl对象obj('x'),“TestClassl(charn):

TestClass(n+1),c(n){}”,所以输出x,然后调用基类构造函数,'x'+1='y',所以输出y,即答案为xy。

27已知类MyClass的定义如下:

ClassMyClass{

public:

MyClass(intd){data=d;}

~MyClass(){}

private:

intdata;

};

下列对MyClass类对象数组的定义和初始化语句中,正确的是(  )。

A. MyClassarray[2];

B. MyClassarray[2]={MyClass(5)};

C. MyClassarray[2]={MyClass(5),Myclass(6)};

D. MyClass*array=newMyClass[2];

[正确答案]C

试题解析:

A只是声明,没有初始化;B的初始化错误,另一个数组对象没有指明地址;D同样做的不是初始化的事情。

28下列关于二叉树的叙述中,正确的是(  )。

A. 叶子结点总是比度为2的结点少一个

B. 叶子结点总是比度为2的结点多一个

C. 叶子结点数是度为2的结点数的两倍

D. 度为2的结点数是度为1的结点数的两倍

[正确答案]B

试题解析:

叶子结点个数一度为2的结点个数+1。

29下列是关于派生类声明的开始部分,其中正确的是(  )。

A. classvirtualB:

publicA

B. virtualclassB:

publicA

C. classB:

publicAvirtual

D. classB:

virtualpublicA

[正确答案]D

试题解析:

声明派生类的一般形成为class派生类名:

[继承方式]基类名。

其中继承方式包括public、private和protected。

而virtual为C++中的关键字,所以选项C错。

虚函数的使用方法是在基类用virtual声明成员函数为虚函数

30针对数组定义intdata[10];,下列表述中错误的是(  )。

A. 用*data可访问到数组的首元素

B. 用data[9]可访问到数组的末元素

C. 用data[10]访问数组元素会超出数组边界

D. data共有10个元素,其首元素是data[1]

[正确答案]D

试题解析:

数组元素的下标是从0到<数组长度>-1,所以数组data的首元素是data[0],尾元素是data[9]。

其他选项的描述都是正确的。

31下列关于纯虚函数与抽象类的描述中,错误的是(  )。

A. 纯虚函数是一种特殊的虚函数,它没有具体的实现

B. 抽象类是指具有纯虚函数的类

C. 一个基类声明了纯虚函数,该基类的派生类一定不是抽象类

D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

[正确答案]C

试题解析:

纯虚函数是在声明虚函数时被“初始化”为0的虚函数。

不定义对象而只作为一种基本类型作为继承的类,称为抽象类。

凡是包含纯虚函数的类都是抽象类。

抽象类的作用是作为一个类族的共同基类。

32若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是(  )。

A. Data+{Data};

B. Dataoperator+{Data};

C. Data+operator{Data};

D. operator+{Data.Data};

[正确答案]B

试题解析:

重载运算符的函数一般格式如为:

函数类型0perator运算符名称(形参列表),因此选8。

33下列关于构造函数和析构函数的描述,错误的是(  )。

A. 析构函数中调用虚函数采用静态联编

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

C. 当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数

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

[正确答案]D

试题解析:

构造函数的主要作用是对数据成员初始化。

构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联

34若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是(  )。

 

A.operatorlong(  )const; 

B.operatorlong(BigNumber); 

C.longoperatorlong(  )const; 

D.longoperatorlong(BigNumber); 

[正确答案]A

试题解析:

C++不仅可以对运算符进行重载,还可以重载类型转换符,函数声明的形式为:

0perator类型符()const。

 

35下列关于构造函数的描述中,错误的是(  )。

 

A.构造函数名与类名相同 

B.构造函数可以有返回值 

C.构造函数可以重载 

D.每个类都有构造函数 

[正确答案]B

试题解析:

构造函数没有返回值,虽然叫函数,但是它没有任何返回值,包括void型都不是,官方叫法应该叫“构造器”。

 

36有如下程序:

#included

usingnamespacestd;

classTestClass{

protected:

TestClass(  ){cout<<'X';}

TestClass(charc){cout<

classTestClassl:

publicTestClass{

public:

TestClassl(charc){cout<

intmain(  ){

TestClassld1('y');

return0;}

执行这个程序,屏幕上将显示输出(  )。

A. y

B. yx

C. xy

D. yy

[正确答案]A

试题解析:

本题中类TestClass为基类,TestClassl为TestClass的派生类。

由main主函数入手,定义TestClassl类型的对象dl,参数值为y。

TestClassl类继承TestClass,所以主函数中“TestClassldl('y');”语句首先调用“TestClassl(charc){colll<

37下面程序的运行结果是(  )。

#include

classbase{

protected:

inta;

public:

base(){cout<<"0";}

};

classbasel:

virtualbase{

public:

basel(){cout<<"1";}

};

classbase2:

virtualbase{

public:

base2(){cout<<"2";}

};

classderived:

publicbasel,publicbase2{

public:

derived(){cout<<"3";}

};

voidmain()

{

derivedobj;

eout<

}

A. 0123

B. 3120

C. O312

D. 3012

[正确答案]A

试题解析:

本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

38下列叙述中正确的是(  )。

A. C程序的基本组成单位是语句

B. C程序中的每一行只能写一条语句

C. 简单C语句必须以分号结束

D. C语句必须在一行内写完

[正确答案]C

试题解析:

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

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1