全国计算机等级《二级C++ 》押题卷.docx
- 文档编号:26117785
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:29
- 大小:26.68KB
全国计算机等级《二级C++ 》押题卷.docx
《全国计算机等级《二级C++ 》押题卷.docx》由会员分享,可在线阅读,更多相关《全国计算机等级《二级C++ 》押题卷.docx(29页珍藏版)》请在冰豆网上搜索。
全国计算机等级《二级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 试题解析:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级C+ 全国计算机等级二级C+ 押题卷 全国计算机 等级 二级 C+ 押题
![提示](https://static.bdocx.com/images/bang_tan.gif)