全国计算机等级考试无纸化真考题库试卷二级C++(1)_第1页
全国计算机等级考试无纸化真考题库试卷二级C++(1)_第2页
全国计算机等级考试无纸化真考题库试卷二级C++(1)_第3页
全国计算机等级考试无纸化真考题库试卷二级C++(1)_第4页
全国计算机等级考试无纸化真考题库试卷二级C++(1)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、全国计算机等级考试无纸化真考题库试卷(1)二级C+(考试时间l20分钟,满分100分)一、选择题(每小题1分,共40分)(1)程序流程图中带有箭头的线段表示的是( )。A)图元关系 B)数据流 C)控制流 D)调用关系(2)结构化程序设计的基本原则不包括( )。A)多态性 B)自顶向下 C)模块化 D)逐步求精(3)软件设计中模块划分应遵循的准则是( )。A)低内聚低耦合 B)高内聚低耦合 C)低内聚高耦合 D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是( )。A)可行性分析报告 B)软件需求规格说明书C)概要没计说明书 D)集成测试计划(5)算法的有穷性是指( )。A)算法

2、程序的运行时间是有限的 B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的 D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(rt一1)2的排序方法是( )。A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序(7)F列关于栈的叙述正确的是( )。A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据C)只能在栈底插入数据 D)不能删除数据(8)在数据库设计中,将ER图转换成关系数据模型的过程属于( )。A)需求分析阶段 B)概念设计阶段 C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下由关系R和s通过运算得到关系T,则所使

3、用的运算为( )。A)并 B)自然连接 C)笛卡尔积 D)交(10)设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课Sc(学号,课号,成绩),则表Sc的关键字(键或码)为( )。A)课号,成绩 B)学号,成绩 C)学号,课号 D)学号,姓名,成绩(1I)下列语句中,错误的是( )。A)const int buffer:256; B)const int temp;C)const double*point;D)const double*rt=new double(55);(12)有如下程序:int x=3:dox-=2;COUX:while(!(-X

4、);执行这个程序的输出结果是( )。A)1 B)3 0 C)12 D)死循环(13)有如下程序:ncludeusing namespace std;int main()int*P;*P=9:cout”The value at p:” *p;return 0;编译运行程序将出现的情况是( )。A)编译时出现语法错误,不能生成可执行文件B)运行时一定输出:llle value at P:9C)运行时一定输出:llle value at P:*9D)运行时有可能出错(14)if语句的语法格式可描述为:格式l:if()或格式2:if()else关于上面的语法格式,下列表述中错误的是( )。A)部分可以

5、是一个if语句,例如if(if(a=0)B)部分可以是一个if语句,例如if()if()C)如果在前加上逻辑非运算符!并交换和的位置,语句功能不变D)部分可以是一个循环语句,例如if()while()(15)下列符号中,正确的c+标识符是( )。A)enum B)2b C)f00一9 D)_32(16)下列关于c+函数的说明中,正确的是( )。A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准c+要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(17)运算符重载是对已有的运算符赋予多重含义,

6、因此( )。A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B)可以改变一个已有运算符的优先级和操作数个数C)只能重载c+中已经有的运算符,不能定义新运算符D)C+中已经有的所有运算符都可以重载(18)下列有关内联函数的叙述中,正确的是( )。A)内联函数在调用时发生控制转移B)内联函数必须通过关键字inline来定义C)内联函数是通过编译器来实现的 D)内联函数函数体的最后一条语句必须是return语句(19)下列运算符不能重载为友元函数的是( )。 A)=()( )-B) + - + - C) = =D)+= -= *=(20)有如下程序:#includeusing n

7、amespaee std;int main()void function(double val);double val:function(val);eout”,使得程序中可以“cinobj;”的形式改变MyClass类的对象0bj中数据成员data的值,则横线处的声明语句应为( )。A)friend istream& operator(istream&is,MyClass&a); B)friend istream&operator(istream&is,MyClass a);C)istream&operator(istream&is,MyClass&a);D)istream&operator(

8、istream&is,MyClass a);(23)由于常对象不能被更新,因此( )。A)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数(24)有如下类定义:class AAim a:public:int getRef()constreturna;int getValue()constreturn a;void set(int n)consta=n;friend void show(AA aa)constcouta=a;static int g()return a;fvoid h(int b)Test

9、:b=b;private:int a;static int b;const int C;int Test:b=0:在标注号码的行中,能被正确编译的是()。A)B)c)D)(32)有如下类声明:class SAMPLE int n:public:SAMPLE(int i=0):n(i)void setValue(int nO);下列关于9etValue成员函数的定义中,正确的是()。A)SAMPLE:setValue(int nO)n=n0; B)void SAMPLE:setValue(int胡)n=n0;C)void setValue(int nO)n=n0;D)setValue(int n

10、O)n=n0;(33)有如下程序:#includeusing namespace std;class Apublic:A()cout”A”;-A()cout”-A”;class B:public AA*P;public:B()cout”B”;P=new A();-B()cout”B”;delete p;int main()B obj;return 0;执行这个程序的输出结果是( )。A)BAAABA B)ABABAAC)BAABAA D)ABAABA(34)有如下程序:#includeusing namespace std;class Baseprivate:void funl()constt

11、out”funl”;protected:void fun2()consttout”fun2”;public:void fun3()constcout”fhll3”;class Derived:protected Basepublic:void fhn4()constcout”filn4”;int main()Derived obj;objfunl();objfun2();objfurd();objfun4();return U:其中有语法错误的语句是()。A)B)C)D)(35)有如下程序:#includeusing namespace std;class Baselpublic:BaseI(

12、int d)coutd;一Basel();class Base2public:Base2(int d)toutd;Base2();class Derived:public Basel,Base2public:Derived(int a,int b,int c,int d):Basel(b),Base2(a),bl(d),b2(c)private:int bl:int b2:;int main()Derived d(1,2,3,4);return 0;执行这个程序的输出结果是()。A)1234B)2134C)12D)21(36)有如下程序:#includeusing namespace std;

13、class Basepublic:void funl()cout”Basen”;virtual void fun2()eout”Basen”;class Derived:public Basepublic:void funl()eout”Derived、n”;void fura()eout”Derivedn”;void f(Base&b)bfunl();bftm2();int main()Derived obj;f(obj);return 0;执行这个程序的输出结果是()。A)BaseB)BaseC)DerivedD)DerivedBase Derived Base Derived(37)模板

14、对类型的参数化提供了很好的支持,因此()。A)类模板的主要作用是生成抽象类B)类模板实例化时,编译器将根据给出的模板实参生成一个类C)在类模板中的数据成员都具有同样类型D)类模板中的成员函数都没有返回值(38)有如下函数模板:templateT east(U u)i return u;其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A)cast(i);B)cast(i);C)east(i);D)east(i);(39)要建立文件流并打开当前目录下的文件6ledat用于输入,下列语句中错误的是()。A)ifstream fin=ffstre

15、amopen(”filedat”);B)ifstream*fin=new ifstream(”filedat”);C)ifstream fin;finopen(”filedat”);D)ifstream*fin=new ifstream();fin-open(”filedat”);(40)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为()。A)iosbase:inB)iosbase:in l ios base:0utC)los base;:0utD)ios_base:in&ios_base:0ut二、基本操作题(共l8分)请使用VC6或使用【答题】菜单打开考

16、生文件夹projl下的工程projl,该工程含有一个源程序文件pn,jlcpp。其中位于每个注释“ERROR 木水found水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:The value is l0注意:只修改注释“ERROR * found*”的下一行语句,不要改动程序中的其他内容。pmjlcpp#includeusing namespace std;class MyClassint value;public:ERROR*found*void MyClass(int val):value(val)int GetValue()constreturn value;void

17、SetValue(int val);ERROR*found*inline void SetValue(int val)value=val;int main()MyClass obj(O);objSetValue(10);ERROR*found*下列语句功能是输出obj的成员value的值tout”The value is”objvalueendl:return 0;三、简单应用题(共24分)请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2cpp,其中定义了Stack类和ArrayStack类。Stack是一个用于表示数据结构“栈”的

18、类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:公有成员函数 功能push 入栈:在栈顶位置添加一个元素pop 退栈:取出并返回栈顶元素ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:a,b,CC,b,a注意:只在指定位置编写适当代码,不要改动程序中的其他内容

19、,也不要删除或移动“*料found*”。proj2cpp#includeusing namespacc std;class Stackpublic:virtual void push(char C)=0;virtual char pop()=0;class ArrayStack:public Stackchar*P;int maxSizc;int top;public:ArravStack(int s)top=0;maxSize=s:*found*P=_;ArrayStack()*found*_;void push(char c)if(top=maxSize)cerr”Overflow! n”

20、:return;*found*_;top+:char pop()if(top=0)cerr”Underflow!、n”;return0;Top-;*found*_;void f(Stack&sRef)char ch=a,b,c;coutch0”,”ch1”,”ch2endl;sRefpush(oh0);sRefpush(ch1);sRefpush(ch2);coutsRefpoP()”,”;coutsRefpoP()”,”;coutsRefpoP()endl;int main()ArrayStack as(10);f(as):return 0:四、综合应用题(共l8分)请使用VC6或使用【答题

21、】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3cpp,补充编制c+程序proj3cpp,其功能是读取文本文件indat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件outdat中。文件indat的长度不大于1000字节。要求:补充编制的内容写在“*”与“*”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。注意:程序最后已将结果输出到文件0utdat中,输出函数writeToFile已经给出并且调用。proj3cpp#include#include#i

22、ncludeusing namespace std;class docprivate:char*sir;文本字符串首地址int length;文本字符个数public:构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址doc(char*filename);void reverse();将字符序列反转一doc();void writeToFile(char*filename); doc:doc(charfilename)ifstream myFile(filename);int len=1001,tmp;atr=new char1en;length=0;while(t

23、rap=myFileget()!=EOF) str1ength+=trap; str1ength=0;myFileclose();void doc:reverse()将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换*333*666*doc:doe()deletestr;void doc:writeToFile(char*filename)Ofstream outFile(filename);outFile”不能重载为类的友元函数。所以本题答案为A。(20)D 【解析】本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值

24、传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。(21)c 【解析】本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则,本题答案为c,c项正确原型为:Fraction operator=(Fraction)。(22)A 【解析】本题考查重载流运算符“”,根据重载规则,本题答案为A。(23)A 【解析】本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。(24)B 【解析】本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以

25、本题答案为B。(25)D 【解析】this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。(26)B 【解析】在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数一虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为B。(27)D 【解析】本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类

26、的成员。如果基类中定义了缺省构造函数或根本没有定义任何一一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。(28)A 【解析】本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数fun1,故本题答案为A。(29)D 【解析】本题考查对象的初始化,类的数据成员是不能在声明类时初始化的,所以本题答案为D。(30)C 【解析】本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a(2)以及对象数组b3,共执行4

27、次构造函数,对象指针不调用构造函数。所以本题答案为c。(31)D 【解析】只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为C。通过默认构造函数初始化c,所以不正确。常成员函数只能引用本类中数据成员,而不能修改它,所以不正确。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员,所以错误。(32)B 【解析】本题考查在类外定义类的成员函数,需要使用作用域限定符“:”,属于基础知识,本题答案为8。(33)B 【解析】本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数

28、,再执行基类的析构函数。所以本题答案为B。(34)B 【解析】本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以错误。(35)D 【解析】本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。(36)B 【解析】在某基类中声明为virtual并在一个或多个派生类中被重新定义

29、的成员函数,本题中定义r一个派生类对象0bi,执行f函数后,将派生类对象0bj转化为基类对象,由于fun1不是虚函数,所以输出基类的fun1;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为8。(37)B 【解析】本题考查类模板的基本概念。类模板的定义和声明都以关键字template开头。关键字后面是一个用逗号分隔的模板参数表,用尖括号“”括起来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。所以B选项正确。(38)D 【解析】本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立

30、一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。(39)A 【解析】本题考查对文件流输入的操作,可以调用文件流的成员函数pen,一般形式如下:文件流对象0pen(磁盘文件名,输入/输出方式)。根据以上格式,可以判断A选项错误。(40)A 【解析】本题考查对文件输入流的操作,ifstream流类为输入流类,默认的文件输入流扣开方式为ios:in。故答案为A。二、基本操作题【参考答案】(1)MyClass(int val):value(val)(2)void MyClass:SetValue(int val)value=val;(3)cout“”The value is”“objGetValue()“end1;【考点分析】本题主要考查MyClass类、构造函数、成员函数及成员函数的调用。【解题思路】(1)考查构造函数,定义构造函数时不能使用void,直接使用MyClass(int val)即可。(2)主要考查成员函数定义,类的成员函数定义时要使用前缀MyClass,而inline是内联函数的关键字,在此是错误的,应该删掉inline并在函数名前加上前缀MyClass,即voidMyClass:SetValue(in

温馨提示

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

评论

0/150

提交评论