全国计算机等级考试二级C++历年真题.doc_第1页
全国计算机等级考试二级C++历年真题.doc_第2页
全国计算机等级考试二级C++历年真题.doc_第3页
全国计算机等级考试二级C++历年真题.doc_第4页
全国计算机等级考试二级C++历年真题.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2007年4月全国计算机等级考试二级C+笔试试题及答案一、选择题(每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是 。A)算法的效率只与问题的规模有关,而与数据的存储结构无关.B)算法的时间复杂度是指执行算法所需要的计算工作量 C)数据的逻辑结构与存储结构是一一对应的.D)算法的时间复杂度与空间复杂度一定相关. (2)在结构化程序设计中,模块划分的原则是 。A) 各模块应包括尽量多的功能B) 各模块的规模应尽量大C)各模块之间的联系应尽量紧密D) 模块内具有高内聚度,模块间具有低耦合度(3)下列叙述中正确的是 。A)软件测试的主要目的是发现程序中的错误.B)软件测试的主要目的是确定程序中错误的位置.C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误(4) 下面选项中不属于面向对象程序设计特征的是 。A)继承性 B)多态性 C)类比性 D)封装性(5) 下列对列的叙述正确的是 。A) 队列属于非线性表B) 队列按”先进后出”的原则组织数据C)队列在队尾删除数据D) 队列按“先进先出”原则组织数据(6)对下列二叉树 进行前序遍历的结果为 A)DYBEAFCZX B)YDEBFZXCA C)ABDYECFXZ D)ABCDEFXYZ(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为 A)n+1 B)n-1 C)2n D)n/2(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。 A)井 B)交 C)投影 D)笛卡儿乘积(9)在E-R图中,用来表示实体之间是联系的图形是 。 A) 矩形 B)椭圆形 C)菱形 D)平行四边形 (10)下列叙述中错误的是 。A) 在数据库系统中,数据的物理结构必须与逻辑结构一致.B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持(11)为了取代C中带参数的宏,在C+中使用 A)重载函数 B)内联函数 C)递归函数 D)友元函数 (12)下列关于类定义的说法中,正确的是A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C) 数据成员必须被声明为私有的D)成员函数只能在类体外进行定义(13)下列关于派生类构造函数和析构函数的说法中,错误的是A)派生类的构造函数会隐含调用基类的构造函数B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数(14)通过运算符重载,可以改变运算符原有的 A)操作数类型 B)操作数个数 C)优先级 D)结合性 (15)有如下函数模板: template T souare(T x) (retumx * x ;)基中T是 A)函数形参 B)函数实参 C)模板形参 D)模板实参 (16)使用输入输出操作符setw,可以控制 A)输出精度 B)输出宽度 C)对齐方式 D)填充字符 (17)下列字符串中,不可以用作C+标识符的是 A)y_2006 B)_TEST_H C)Retum D)switch(18)字面常量42、4.2、42L的数据类型分别是 A)long、double int B)long、float、intC)int、double、long D)int、float、long(19)执行下列语句段后,输出字符“*”的个数是 for(int i =50;I1; i )cout”*”A)48 B)49 C)50 D)51(20)有如下程序段 inti =0, j=1;intr=i ; / r =j; /int*p=i ; / *p=r ; / 基中会产生编译错误的语句是 A) B) C) D) (21)有如下函数定义:void func (int a,intb) a+; b+;若执行代码段: intx=0 ,y=1func(x,y);则变量x和y值分别是 A)0和1 B)1和1 C)0和2 D)1和2(22)有如下程序: #includeusing namespace std;class Apublicstatic int a;void init()a=1;A(int a=2) init();a+;int A:;a=0A obj;Int main()coutOBJ.A;retum0;运行时输出的结果是 A)0 B)1 C)2 D)3(23)下列有关继承和派生的叙述中,正确的是A) 派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数D)虚函数必须在派生类中重新实现(24)下列运算符中,不能被重载的是 A) B)!= C). D)+(25)下列函数模板的定义中,合法的是A) template Tabs(T x) return x 0 x: x;B)template class Tabs(Tx)retumx0 -x;x;C)template Tabs(T x)retum x0 -x;x;D)template T abs(T x)returm xdata;中,cin是 A)C+的关键字 B)类名 C)对象名 D)函数名 (27)有如下程序: #includeusing namespace std;class test private:int a;public:test()cout”constructor”ENDL;test(int a)coutAENDL;test(const test_test)a=_testa;cout”copy constructor”ENDL;test()cout”destructor”ENDL;int main()test A(3)return0;运行时输出的结果是 A)3 B)constructordestruclorC)copy constructorD)3dstructor destruclor(28)若有如下类声明 class My Class public:MyClass() cout1;执行下列语句 MyClass a,b2,*P2;以后,程序的输出结果是 A)11 B)111 C)1111 D)11111(29)有如下程序: #includeusing namespace std;class point public:static int number;public:point()number+;point()number-;imt point:number=0;void main()point*ptr;printA,B;point*ptr_point=new point3;ptr=ptr_point;pointC;coutPOINT:NUMBERENDL;deleteptr;运行时输出的结果是 A)3 B)4 C)6 D)7/POINT:NUMBERENDL; POINT:NUMBERENDL;(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。 #includeusing namespace std;class Baseint a,b;public:Bace(int x ,int y) a=x; b=y;Void show() coutA,BENDL;clsaa Derived:public Base int c ,d;public:Derived(int x,int y,int z,int m):Base(x,y)c=z; d=m;Void show() coutC,Dshow();Return 0;运行时输出的结果是 A)10,20 B)30,40 C)20,30 D)50,50(31)有如下程序: #includeusing namespace std;class Apublic;A(int i )x= i ;Void sispa()coutX,;Private:int x ;class B;publicApublic;B(int i):A(i +10) x =i ;voud dispb() dispa();coutX,ENDL;Private:Int x;int main()B b(2);b.dispb()retum 0:运行时输出的结果是 A)10,2 B)12,10 C)12,2 D)2,2(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #includeusing namespace std;class Basepublic:virtual void f()cout”f0+”;void g() cout”g0+”;class Derived:public Basepublic: void f() cout”f+”;void g() coutf(); p-g();return 0:运行时输出的结果是 A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+(33)下面程序中对一维坐标点类Point进行运算符重载 #includeusing namespace std;class point public:point (int vaI) x=val;point operator+()x+;retum*this;print operator+(int) point old=*this,+(*this);retum old;int GetX() const retum x;private:int x;int main()point a(10);cout(+a).GetX();coutA+.GETX();retum();编译和运行情况是A)运行时输出1011 B)运行时输出1111C)运行时输出1112 D)编译有错(34)有如下程序: #includeusing namespace std;int main()char str100,*p;coutstr;p=str;for(int i =0;*p!=”0”;p+, i +);cout i ENDL;retum 0;运行这个程序时,若输入字符串为 abcdefg abcd则输出结果是 A)7 B)12 C)13 D)100(35)有如下程序: #includeusing namespace std:class Samplefriend long fun (Sample s);public:Sample (long a )x=a;Private:long x;long fun (Sample s)if(s.x2)retum 1;retum s.x*fun(Sample(s.x-a);int main()int sum=0for(int i =0; i 6; i +) sum+=fun(Sample( i );) coutSUM;retum 0;运行时输出的结果是 A)120 B)16 C)154 D)34二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】【15】序号的横线上,答在试卷上不得分。(1)在深度为7的满二叉树中,度为2的结点个数为 【1】 。 (2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 【2】 测试。 (3)在数据库系统中,实现各种数据管理体制功能的核心软件称为 【3】 。 (4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 【4】 阶段。 (5)在结构化分析使用的数据流图(DFD)中,利用 【5】 对其中的图形元素进行确切解释。 (6)C+中只有两个逻辑常量:true和 【6】 。 (7)若要访问指针变量p所指向的数据,应使用表达式 【7】 。(8)已知一个函数的原型是: int fn(double x);若要以5.27为实参调用该函数,应使用表达式 【8】 。 (9)有如下定义: class MAint value;public:MA(int n=0):valut(n);MA*ta,tb;其中MA类的对象名标识符是 【9】 。(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。 Class my ClassPrivate:Int data:Public:MyClass(int value); /构造函数MyClass(const 【10】 another Object); /拷贝构造函数 (11)用来派生新类的称为 【11】 ,而派生出的新类称为它的子类或派生类。 (12)有如下程序: #includeusing namespace std;clsaa CApublic:CADcoutA;class CB ;private CApublic;CB()coutB;int main()coutB;int main()CA a;CB b;retum0;这个程序的输出结果是 【12】 。(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是 【13】 个。 (14)有如下程序: #includeusing namespace std;class DAint k;public:DA(int x=1): k (x)DA()cout;int main()DA d=DA(3),DA(3),DA(3);DA* p=new DA2;deletep;return0;这个程序的输出结果是 【14】 。(15)C+语言中的多态性分为编译时的多态性和 【15】 时的多态性。2007年4月计算机等级考试C+考试答案 选择题:15BDACD 6-10CABCA 11-15BADAC 16-20BCDBA 21-25CCCCA 26-30CDBDA 30-35CBBBC填空:1、632、黑盒 3、DBMS 4、开发 5、数据字典 6、false 7、 *P 8、fn(5.27) 9、tb10、myclass&11、基类 12、AAB 13、1个 14、11333 15、运行2009年9月全国计算机等级考试二级二级C+笔试试卷一、选择题(1)-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B)带链队列C)二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A)循环队列B)栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A)可封装D)自顶向下C)模块化D)逐步求精(27)有如下程序:#include using namespace std;class Toypublic:Toy(char* _n) strcpy (name,_n); count+;Toy() count-; char* GetName() return name; static int getCount() return count; private:char name10;static int count;int Toy:count=0;int mail()Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”);coutt1.getCount()endl;return 0;运行时的输出结果是A)1B)2 C)3 D)运行时出错(28)有如下程序#include using namespace std;class A public:A(int i):rl(i) void print() couter1-;void print() const coutCrl*rl-;private:int rl;int main()A al(2); const A a2(4);Al.print();a2.print();Return 0;运行时的输出结果是A)运行时出错 B)E2-C16- C)C4-C16- D)E2-E4-(11)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则A)FA必须定义在FB之前B)FB必须定义在FA之前C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前(12)有如下两个类定义class AA;class BBAA v1,*v2;BB v3;Int *v4;其中有一个成员变量的定义是错误的,这个变量是A)v1B)v2C)v3D)v4(13)有如下类定义:class XXint xdata;public:XX(int n=0) : xdata (n) ;class YY : public XXint ydata;public:YY(int m=0, int n=0) : XX(m), ydata(n) ;YY类的对象包含的数据成员的个数是A)1B)2C)3D)4(14)下列有关运算符函数的描述中,错误的是A)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数D)在表达式中使用重载的运算符相当于调用运算符重载函数(15)下列关于模板形参的描述中,错误的是A)模板形参表必须在关键字template之后B)模板形参表必须用括弧( )括起来C)可以用class修饰模板形参D)可以用typename修饰模板形参(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是A)ios_base:curB)ios_base:begC)ios_base:outD)ios_base:end(17)下列字符串可以用作C+标识符的是A)2009varB)gotoC)test - 2009D)_123(18)下列枚举类型的定义中,包含枚举值3的是A)enum test RED, YELLOW, BLUE, BLACK;B)enum test RED, YELLOW=4, BLUE, BLACK;C)enum test RED=-1, YELLOW,BLUE, BLACK;D)enum test RED, YELLOW=6, BLUE, BLACK;(19)有如下程序段:int i=1;while (1) i+;if(i = 10) break;if(i%2 = 0) cout *;执行这个程序段输出字符*的个数是A)10 B)3 C)4 D)5(20)已知数组arr的定义如下:int arr5 = 1,2,3,4,5;下列语句中输出结果不是2的是A)cout *arr+1 endl;B)cout *(arr+1)endl;C)cout arr1 endl;D)cout *arr endl;(21)计算斐波那契数列第n项的函数定义如下:Int fib(int n)if (n = 0) return 1;else if (n = 1) return 2;else return fib(n-1)+fib(n-2);若执行函数调用表达式fib(2),函数fib被调用的次数是A)1 B)2 C)3 D)4(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是Sample a2, *p = new Sample;A)0 B)1 C)2 D)3(23)下列关于虚基类的描述中,错误的是A)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时,虚基类的构造函数只被调用一次C)声明“class B : virtual public A”说明类B为虚基类D)建立派生类对象时,首先调用虚基类的构造函数(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是A)不合法的运算符B)一元运算符C)无操作数的运算符D)二元运算符(25)有如下模板声明:template class A;下列声明中,与上述声明不等价的是A)template class A;B)template class A;C)template class A;D)template class A;(26)下列关于C+流的描述中,错误的是A)coutA表达式可输出字符AB)eof()函数可以检测是否到达文件尾C)对磁盘文件进行流操作时,必须包含头文件fstreamD)以ios_base:out模式打开的文件不存在时,将自动建立一个新文件(29)有如下程序:#includeusing namespace std;class Namechar name20;public:Name()strcpy(name,”); cout?;Name(char *fname)strcpy(name,fname); cout?;int main()Name names3=Name(“张三”),Name(“李四”);Return 0;运行此程序输出符号?的个数是A)0 B)1 C)2 D)3(30)有如下程序:#includeusing namespace std;public:AA() cout1; ;class BB: public AAint k;public:BB():k(0) cout2; BB(int n):k(n) cout3;int main()BB b(4), c;return 0;运行时的输出结果是A)1312 D)132 C)32 D)1412(31)有如下程序:#includeusing namespace std;class C1public:C1() cout1; ;Class C2: public c1public:c2() cout2; ;int main()C2 cb2;C1 *cb1;return 0;运行时的输出结果是A)121 B)21 C)211 D)12(32)有如下程序#includeusing namespace std;class Publication /出版物类char name30;public:Publication(char *name=”未知名称”)strcpy(this-name,name);const char * getName()const return name; virtual const char * getType()const return “未知类型”;class Book: public Publication /书类public:Book(char *name): Publication(name)virtual const char * getType()const return “书“;;void showPublication( Publication &p)coutp.getType()”:”p.getName()endl;int main()Book book(“精彩人生”);showPublication(book);return 0;运行时的输出结果是A)未知类型:未知名称B)未知类型:精彩人生C)书:未知名称 D)书:精彩人生(33)下列关于运算符重载的描述中,错误的是A):运算符不能重载B)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定义为友元D)重载运算符应完成“下标访问”操作(34)有如下程序:#include#includeUsing namespace std;int main()int s=123, 234;coutrightsetfill(*)setw(6);for(int i=0; i2; i+) coutsi20; i-=2) couti,;运行时循环体的执行次数是 【7】 。(8)利用表达式ai可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后,利用指针p也可访问该元素,相应的表达式是 【8】 。(9)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。void reverse(int *a, int size)if(size2) return;int k=a0;a0=asize-1;asize-1=k;reverse(a+1, 【9】 );(10)类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。class Samplepublic:Sample(int data=0);Private:Int data;Sample:Sample(int data) 【10】 (11)有如下类定义:class Samplepublic:Sample();Sample();Private:Static int date;将静态数据成员data初始化为0的语句是 【11】 。(12)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。class Shapepublic:virtual int CalArea()=0;class Triangle: public Shapepublic:Triangleint s, int h: side(s),height(h) 【12】 return side*height/2 ; private:int side;int height;(13)有如下程序:#include using namespace std;class GrandChildpublic:GrandChild() strcpy (name,”Unknown”); const char * getName()const return name; virtual char * getAddress()const=0;private:char name20;class GrandSon : public GrandChildpublic:GrandSonchar *name Char * getAddress() const return “Shanghai”; ;int main()GrandChild *gs=new GrandSon(“Feifei”);coutgetName()”住在”getAddress()endl;delete gs;return 0;运行时的输出结果是 【13】 。(14)如下程序定义了“单词”类word,类中重载了运算符,用于比较“单词”的大小,返回相应的逻辑值。程序的输出结果为:After Sorting: Happy Welcome,请将程序补充完整。#include #include using namespace std;class Wordpublic:Word(string s) : str(s) string getStr() return str; 【14】 const return (strw.str); friend ostream& operator (ostream& output, const Word &w) outputw.str; return output; private:string str;Int main()Word w1(“Happy”),w2(“Welcome”);Cout”After sorting: “;if(w1w2) coutw1 w2;else coutw2 w1;return 0;(15)请将下列模板类Data补充完整。template class Datapublic:void put (T v) val=v; 【15】 get() /返回数据成员val的值,返回类型不加转换 return val; private:T val;2009年9月全国计算机等级考试二级C+笔试参考答案一、选择题15. 610、 1115、DCBCB 1620、ADACD 2125、BDCBD 2630、ACBDA 3135、BDCBA二、填空题(6)double (7)15 (8)*(p+i) (9)size-1 (10)this-data=data;(11)int Sample:data = 0;(12)int CalArea(size,height) (13)Unknown住在Shanghai(14)bool operator (Word w) (15)T2008年9月全国计算机等级考试二级C+真题试卷及答案( 1)一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。 A)123456ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA (2)下列叙述中正确的是( )。 A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 D)循环队列中元素的个数是由队头指针和队尾指针共同决定(3)在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。 A)O(n) B)O(n2) C)O(log2n) D)O(nlog2n)(4)下列叙述中正确的是( )。A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是( )。A)控制流 C)模块调用 B)事件驱动 D)数据流(6)在软件开发中,需求分析阶段可以使用的工具是( )。A)N-S 图C)PAD 图B)DFD 图D)程序流程图(7)在面向对象方法中,不属于“对象”基本特点的是( )。A)一致性C)多态性B)分类性D)标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。A)一对一C)多对一B)一对多D)多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。 A)人工管理阶段 C)数据库系统阶段(10)有三个关系 R、S 和 T 如下: 由关系 R 和 S 通过运算得到关系 T,则所使用的运算为()。 A)笛卡尔积 B)交 C)并 D)自然连接(11)在下列原型所示的

温馨提示

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

评论

0/150

提交评论