收藏 分销(赏)

2023年全国计算机等级考试二级笔试样卷C++语言程序设计.doc

上传人:二*** 文档编号:4545640 上传时间:2024-09-27 格式:DOC 页数:31 大小:92.54KB
下载 相关 举报
2023年全国计算机等级考试二级笔试样卷C++语言程序设计.doc_第1页
第1页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、全国计算机等级考试二级笔试样卷C+语言程序设计一、选择题(1)(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是对的的,请将对的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列选项中不符合良好程序设计风格的是A)源程序要文档化B)数据说明的顺序要规范化C)避免滥用goto语句D)模块设计要保证高耦合、高内聚(2)从工程管理角度,软件设计一般分为两步完毕,它们是A)概要设计与具体设计B)数据设计与接口设计C)软件结构设计与数据设计D)过程设计与数据设计(3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试 B)概要设计C)软件维护D)具体设计

2、(4)在数据库系统中,用户所见的数据模式为 A)概念模式B)外模式C)内模式D)物理模式(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运营阶段D)物理设计(6)设有如下三个关系表 RSTABCABCm13m13nn13下列操作中对的的是A)TRS B)TRSC)TRSD)TR/S(7)下列叙述中对的的是 A)一个算法的空间复杂度大,则其时间复杂度也必然大 B)一个算法的空间复杂度大,则其时间复杂度必然小 C)一个算法的时间复杂度大,则其空间复杂度必然小D)上述三种说法都不对(8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63

3、 B)64 C)6 D)7(9)数据库技术的主线目的是要解决数据的A)存储问题B)共享问题C)安全问题 D)保护问题(10)对下列二叉树进行中序遍历的结果是A)ACBDFEGB)ACBDFGEC)ABDCGEFD)FCADBEG(11)下列有关内联函数的叙述中,对的的是A)内联函数在调用时发生控制转移B)内联函数必须通过关键字inline来定义C)内联函数是通过编译器来实现的D)内联函数函数体的最后一条语句必须是return语句(12)下列情况中,不会调用拷贝构造函数的是A)用一个对象去初始化同一类的另一个新对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行

4、形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用时(13)下列有关继承和派生的叙述中,对的的是A)假如一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B)派生类的成员函数可以访问基类的所有成员C)基类对象可以赋值给派生类对象D)假如派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(14)下列运算符不能重载为友元函数的是A)= () - B)+ - + - C) = = D)+= -= *= /=(15)关于在调用模板函数时模板实参的使用,下列表述对的的是A)对于虚拟类型参数所相应的模板实参,假如能从模板函数的实参中获得相同的信息,则都可以省略B)对于虚拟类型参

5、数所相应的模板实参,假如它们是参数表中的最后的若干个参数,则都可以省略C)对于虚拟类型参数所相应的模板实参,若可以省略则必须省略D)对于常规参数所相应的模板实参,任何情况下都不能省略(16)下列关于输入流类成员函数getline()的描述中,错误的是A)该函数是用来读取键盘输入的字符串的B)该函数读取的字符串长度是受限制的C)该函数读取字符串时,碰到终止符便停止D)该函数读取字符串时,可以包含空格(17)下列符号中,对的的C+标记符是A)enumB)2bC)foo-9D)_32(18)下列语句中,错误的是A)const int buffer=256;B)const double *point;

6、C)int const buffer=256;D)double * const point;(19)if语句的语法格式可描述为:格式1:if() 或格式2:if() else 关于上面的语法格式,下列表述中错误的是A)部分可以是一个if语句,例如if(if(a=0) ) B)部分可以是一个if语句,例如if() if() C)假如在前加上逻辑非运算符!并互换 和 的位置,语句功能不变D)部分可以是一个循环语句,例如if() while() (20)有如下说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为9的表达式是A)*p+9B)*(p+8)C)*p+=9D)p+

7、8(21)若有下面的函数调用:fun(a+b, 3, max(n-1, b)则fun的实参个数是A)3B)4C)5D)6(22)以下关键字不能用来声明类的访问权限的是A)publicB)staticC)protectedD)private(23)在公有继承的情况下,允许派生类直接访问的基类成员涉及A)公有成员B)公有成员和保护成员C)公有成员、保护成员和私有成员D)保护成员(24)关于运算符重载,下列表述中对的的是A)C+已有的任何运算符都可以重载B)运算符函数的返回类型不能声明为基本数据类型C)在类型转换符函数的定义中不需要声明返回类型D)可以通过运算符重载来创建C+中本来没有的运算符(25

8、)关于关键字class和typename,下列表述中对的的是A)程序中的typename都可以替换为classB)程序中的class都可以替换为typenameC)在模板形参表中只能用typename来声明参数的类型D)在模板形参表中只能用class或typename来声明参数的类型(26)有如下程序#include #include using namespace std;int main( )coutSETPRECISION(3)FIXEDSETFILL(*)SETW(8);cout12.345_34.567;return 0;若程序的输出是:*12.345*34.567则程序中下划线处漏

9、掉的操作符是 A)setprecision(3)B)fixedC)setfill(*)D)setw(8)(27)有如下程序#include #include using namespace std;class MyClasspublic:MyClass( ) coutA; MyClass(char c) coutMyClass( ) coutB; ;int main( )MyClass p1,*p2;p2=new MyClass(X); delete p2; return 0;执行这个程序屏幕上将显示输出 A)ABXB)ABXBC)AXBD)AXBB(28)有如下程序#include usin

10、g namespace std;int i=1;class Funpublic:static int i;int value( ) return i-1;int value( )const return i+1;int Fun:i=2;int main( )int i=3;Fun fun1;const Fun fun2;_return 0;若程序的输出结果是:123则程序中下划线处漏掉的语句是A)coutFun:iB)coutFun:ifun1.value()C)coutFun:i;D)cout(29)有如下程序:#include using namespace std;class Obj s

11、tatic int i;public: Obj( ) i+; Obj( ) i-; static int getVal( ) return i;int Obj:i=0;void f()Obj ob2; coutint main( ) Obj ob1; f( ); Obj *ob3=new Obj; coutgetVal( ); delete ob3; cout return 0;程序的输出结果是A)232B)231C)222D)221(30)有如下程序#include using namespace std;class Base protected:Base( ) coutA; Base(ch

12、ar c) cout;class Derived: public Basepublic:Derived( char c ) cout;int main( )Derived d1(B);return 0;执行这个程序屏幕上将显示输出A)BB)BAC)ABD)BB(31)有如下类定义:class MyBase int k;public: MyBase(int n=0):k(n) int value( )const return k;class MyDerived: MyBase int j;public: MyDerived(int i): j(i) int getK( )const return

13、 k; int getJ( )const return j; ;编译时发现有一处语法错误,对这个错误最准确的描述是A)函数getK试图访问基类的私有成员变量kB) 在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或privateC)类MyDerived 缺少一个无参的构造函数D)类MyDerived的构造函数没有对基类数据成员k进行初始化(32)在一个派生类对象结束其生命周期时A)先调用派生类的析构函数后调用基类的析构函数B)先调用基类的析构函数后调用派生类的析构函数C)假如基类没有定义析构函数,则只调用派生类的析构函数D)假如派生类没有定义析构函

14、数,则只调用基类的析构函数(33)有如下的运算符重载函数定义:double operator +(int i, int k) return double(i+k); 但定义有错误,对这个错误最准确的描述是A)+ 只能作为成员函数重载,而这里的 + 是作为非成员函数重载的B)两个int型参数的和也应当是int型,而这里将 + 的返回类型声明为doubleC)没有将运算符重载函数声明为某个类的友元D)C+已经提供了求两个int型数据之和的运算符 +,不能再定义同样的运算符(34)语句ofstream f(SALARY.DAT, ios_base:app); 的功能是建立流对象f,并试图打开文献SA

15、LARY.DAT与f关联,并且A)若文献存在,将其置为空文献;若文献不存在,打开失败B)若文献存在,将文献指针定位于文献尾;若文献不存在,建立一个新文献C)若文献存在,将文献指针定位于文献首;若文献不存在,打开失败D)若文献存在,打开失败;若文献不存在,建立一个新文献(35)有如下程序#include using namespace std;class A public:virtual void func1( ) coutA1; void func2( ) coutA2; ;class B:public Apublic:void func1( ) coutB1; void func2( ) c

16、outfunc1( );p-func2( );return 0;运营此程序,屏幕上将显示输出A) B1B2 B) A1A2C) B1A2D) A1B2二、填空题(每空2分,共30分)请将每一个空的对的答案写在答题卡【1】【15】序号的横线上,答在试卷上不得分。(1)下列软件系统结构图的宽度为 【1】 。(2) 【2】 的任务是诊断和改正程序中的错误。(3)一个关系表的行称为 【3】 。(4)按“先进后出”原则组织数据的数据结构是 【4】 。(5)数据结构分为线性结构和非线性结构,带链的队列属于 【5】 。(6)若有定义语句:int* a, b;,则变量b的数据类型是 【6】 。(7)已知数组a

17、中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i1的单元,其中1in。例如,当n4,a中原有数据为1,2,3,4时,则移动后a中元素变为2,3,4,4。请将语句补充完整:for (int i=0; i ai = a 【7】 ; (8)已知递归函数f的定义如下:int f(int n) if (n = 1) return 1; /递归结束情况 else return n * f(n-2); /递归则函数调用语句f(5)的返回值是 【8】 。(9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,假如没有显式给出数组元素的初值,则调用缺省构造函数。下列程序涉及到对象数组的创建

18、和单个对象的创建,其输出结果是 【9】 。#include using namespace std;class Foo public:Foo(int x) cout A; Foo() ;int main()Foo f3, g(3);return 0; (10)已知下列程序的输出结果是42,请将画线处缺失的部分补充完整。#include using namespace std;class Foo int value;public:Foo( ) : value(0) void setValue(int value) 【10】 = value; /给Foo的数据成员value赋值void print

19、( ) cout value; ;int main( )Foo f;f.setValue(42);f.print();return 0;(11)假如不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是 【11】 。#include using namespace std;class Base public:void print ( ) cout B; ;class Derived : public Base public:void print ( ) cout print( );pd-print( );delete pd

20、;return 0; (12)在声明派生类时,假如不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:class Base protected:void fun( ) ;class Derived : Base ;则Base类中的成员函数fun(),在Derived类中的访问权限是 【12】 (注意:规定填写private、protected或public中的一项)。(13)在MyClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。 【13】 MyClass:operator=(const MyClass& rhs)if (this = &

21、rhs) return *this;value = rhs.value;return *this; (14)插入排序算法的重要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的对的位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。class InsertSortpublic:InsertSort(int* a0, int n0) :a(a0), n(n0) /参数a0是某数组首地址,n是数组元素个数void sort( )/此函数假设已排序序列初始化状态只包含a0,未排序序列初始为a1.an-1for (int i=1; i int

22、t=ai;int j;for ( 【14】 ; j0; -j) if (t=aj-1) break;aj=aj-1; aj=t;protected:int *a, n; /指针a用于存放数组首地址,n用于存放数组元素个数;(15)下列程序的输出结果是 【15】 。#include using namespace std;class A int a;public: A():a(9)virtual void print() const couta;class B : public A char b;public:B( )b=S;void print( ) const cout print();sh

23、ow(d1);show(d2);return 0;/b;/a;/Fun:ifun1.value() B)+ - + - C) = = D)+= -= *= /=(15)关于在调用模板函数时模板实参的使用,下列表述对的的是A)对于虚拟类型参数所相应的模板实参,假如能从模板函数的实参中获得相同的信息,则都可以省略B)对于虚拟类型参数所相应的模板实参,假如它们是参数表中的最后的若干个参数,则都可以省略C)对于虚拟类型参数所相应的模板实参,若可以省略则必须省略D)对于常规参数所相应的模板实参,任何情况下都不能省略(16)下列关于输入流类成员函数getline()的描述中,错误的是A)该函数是用来读取键

24、盘输入的字符串的B)该函数读取的字符串长度是受限制的C)该函数读取字符串时,碰到终止符便停止D)该函数读取字符串时,可以包含空格(17)下列符号中,对的的C+标记符是A)enumB)2bC)foo-9D)_32(18)下列语句中,错误的是A)const int buffer=256;B)const double *point;C)int const buffer=256;D)double * const point;(19)if语句的语法格式可描述为:格式1:if() 或格式2:if() else 关于上面的语法格式,下列表述中错误的是A)部分可以是一个if语句,例如if(if(a=0) )

25、B)部分可以是一个if语句,例如if() if() C)假如在前加上逻辑非运算符!并互换 和 的位置,语句功能不变D)部分可以是一个循环语句,例如if() while() (20)有如下说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为9的表达式是A)*p+9B)*(p+8)C)*p+=9D)p+8(21)若有下面的函数调用:fun(a+b, 3, max(n-1, b)则fun的实参个数是A)3B)4C)5D)6(22)以下关键字不能用来声明类的访问权限的是A)publicB)staticC)protectedD)private(23)在公有继承的情况下,允许派

26、生类直接访问的基类成员涉及A)公有成员B)公有成员和保护成员C)公有成员、保护成员和私有成员D)保护成员(24)关于运算符重载,下列表述中对的的是A)C+已有的任何运算符都可以重载B)运算符函数的返回类型不能声明为基本数据类型C)在类型转换符函数的定义中不需要声明返回类型D)可以通过运算符重载来创建C+中本来没有的运算符(25)关于关键字class和typename,下列表述中对的的是A)程序中的typename都可以替换为classB)程序中的class都可以替换为typenameC)在模板形参表中只能用typename来声明参数的类型D)在模板形参表中只能用class或typename来声

27、明参数的类型(26)有如下程序#include #include using namespace std;int main( )coutSETPRECISION(3)FIXEDSETFILL(*)SETW(8);cout12.345_34.567;return 0;若程序的输出是:*12.345*34.567则程序中下划线处漏掉的操作符是 A)setprecision(3)B)fixedC)setfill(*)D)setw(8)(27)有如下程序#include #include using namespace std;class MyClasspublic:MyClass( ) coutA;

28、 MyClass(char c) coutMyClass( ) coutB; ;int main( )MyClass p1,*p2;p2=new MyClass(X); delete p2; return 0;执行这个程序屏幕上将显示输出 A)ABXB)ABXBC)AXBD)AXBB(28)有如下程序#include using namespace std;int i=1;class Funpublic:static int i;int value( ) return i-1;int value( )const return i+1;int Fun:i=2;int main( )int i=3

29、;Fun fun1;const Fun fun2;_return 0;若程序的输出结果是:123则程序中下划线处漏掉的语句是A)coutFun:iB)coutFun:ifun1.value()C)coutFun:i;D)cout(29)有如下程序:#include using namespace std;class Obj static int i;public: Obj( ) i+; Obj( ) i-; static int getVal( ) return i;int Obj:i=0;void f()Obj ob2; coutint main( ) Obj ob1; f( ); Obj

30、*ob3=new Obj; coutgetVal( ); delete ob3; cout return 0;程序的输出结果是A)232B)231C)222D)221(30)有如下程序#include using namespace std;class Base protected:Base( ) coutA; Base(char c) cout;class Derived: public Basepublic:Derived( char c ) cout;int main( )Derived d1(B);return 0;执行这个程序屏幕上将显示输出A)BB)BAC)ABD)BB(31)有如

31、下类定义:class MyBase int k;public: MyBase(int n=0):k(n) int value( )const return k;class MyDerived: MyBase int j;public: MyDerived(int i): j(i) int getK( )const return k; int getJ( )const return j; ;编译时发现有一处语法错误,对这个错误最准确的描述是A)函数getK试图访问基类的私有成员变量kB) 在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或privat

32、eC)类MyDerived 缺少一个无参的构造函数D)类MyDerived的构造函数没有对基类数据成员k进行初始化(32)在一个派生类对象结束其生命周期时A)先调用派生类的析构函数后调用基类的析构函数B)先调用基类的析构函数后调用派生类的析构函数C)假如基类没有定义析构函数,则只调用派生类的析构函数D)假如派生类没有定义析构函数,则只调用基类的析构函数(33)有如下的运算符重载函数定义:double operator +(int i, int k) return double(i+k); 但定义有错误,对这个错误最准确的描述是A)+ 只能作为成员函数重载,而这里的 + 是作为非成员函数重载的B

33、)两个int型参数的和也应当是int型,而这里将 + 的返回类型声明为doubleC)没有将运算符重载函数声明为某个类的友元D)C+已经提供了求两个int型数据之和的运算符 +,不能再定义同样的运算符(34)语句ofstream f(SALARY.DAT, ios_base:app); 的功能是建立流对象f,并试图打开文献SALARY.DAT与f关联,并且A)若文献存在,将其置为空文献;若文献不存在,打开失败B)若文献存在,将文献指针定位于文献尾;若文献不存在,建立一个新文献C)若文献存在,将文献指针定位于文献首;若文献不存在,打开失败D)若文献存在,打开失败;若文献不存在,建立一个新文献(3

34、5)有如下程序#include using namespace std;class A public:virtual void func1( ) coutA1; void func2( ) coutA2; ;class B:public Apublic:void func1( ) coutB1; void func2( ) coutfunc1( );p-func2( );return 0;运营此程序,屏幕上将显示输出A) B1B2 B) A1A2C) B1A2D) A1B2二、填空题(每空2分,共30分)请将每一个空的对的答案写在答题卡【1】【15】序号的横线上,答在试卷上不得分。(1)下列软

35、件系统结构图的宽度为 【1】 。(2) 【2】 的任务是诊断和改正程序中的错误。(3)一个关系表的行称为 【3】 。(4)按“先进后出”原则组织数据的数据结构是 【4】 。(5)数据结构分为线性结构和非线性结构,带链的队列属于 【5】 。(6)若有定义语句:int* a, b;,则变量b的数据类型是 【6】 。(7)已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i1的单元,其中1in。例如,当n4,a中原有数据为1,2,3,4时,则移动后a中元素变为2,3,4,4。请将语句补充完整:for (int i=0; i ai = a 【7】 ; (8)已知递归函数f的定义如下:int f(int n) if (n = 1) return 1; /递归结束情况 else return n * f(n-2); /递归则函数调用语句f(5)的返回值是 【8】 。

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服