历年计算机二级c++真题及答案_第1页
历年计算机二级c++真题及答案_第2页
历年计算机二级c++真题及答案_第3页
历年计算机二级c++真题及答案_第4页
历年计算机二级c++真题及答案_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

B)数据库管理系统 B)数据库管理系统 D)数据库(9)下列叙述中正确的是全国计算机等级考试 C++二级笔试试卷公共基础知识及 C++语言程序设计(考试时间 90分钟,满分 100)分)2004年9月全国计算机等级考试二级笔试试卷一、选择题 ((1)~(35)每小题2分,共70分)下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。下面叙述正确的是算法的执行效率与数据的存储结构无关算法的空间复杂度是指算法程序中指令 (或语句)的条数算法的有穷性是指算法必须能在执行有限个步骤之后终止以上三种描述都不对以下数据结构中不属于线性数据结构的是A)队列B)线性表 C)二叉树 D)栈在一棵二叉树上第 5层的结点数最多是A)8 B)16 C)32 D)15下面描述中,符合结构化程序设计风格的是使用顺序、选择和重复 (循环)三种基本控制结构表示程序的控制逻辑模块只有一个入口,可以有多个出口注重提高程序的执行效率不使用goto语句下面概念中,不属于面向对象方法的是A)对象B)继承 C)类D)过程调用在结构化方法中,用数据流程图 (DFD)作为描述工具的软件开发阶段是A)可行性分析 B)需求分析 C)详细设计 D)程序编码在软件开发中,下面任务不属于设计阶段的是A)数据结构设计 B)给出系统模块结构C)定义模块算法 D)定义需求并建立系统模型数据库系统的核心是数据模型 C)软件工具A)数据库系统是一个独立的系统,不需要操作系统的支持数据库设计是指设计数据库管理系统数据库技术的根本目标是要解决数据共享的问题数据库系统中,数据的物理结构必须与逻辑结构一致下列模式中,能够给出数据库物理存储结构与物理存取方法的是A)内模式 B)外模式 C)概念模式 D)逻辑模式关于面向对象的程序设计方法,下列说法正确的是“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理“多态性”指的是对象的状态会根据运行时要求自动变化基类的私有成员在派生类的对象中不可访问,也不占内存空间在面向对象的程序设计中,结构化程序设计方法仍有着重要作用判断字符型变量 ch是否为大写英文字母,应使用表达式A)ch>='A'&ch<='Z'B)ch<='A'||ch>='Z'C)'A'<=ch<='Z'D)ch>='A'&&ch<='Z'已知下列语句中的 x和y都是int型变量,其中错误的语句A)x=y++;B)x=++y;C)(x+y)++;D)++x=y;执行语句序列intn;cin>>n;switch(n){case1:cout<<'1';cout<<'2';break;default:cout<<'3';}时,若键盘输入 1,则屏幕显示A)1 B)2 C)3 D)12下列程序的输出结果是#include<iostream>usingnamespacestd;intmain()chara[]="Hello,World";char*ptr=a;while(*ptr){if(*ptr>='a'&&*ptr<='z')cout<<char(*ptr+'A'-'a');elsecout<<*ptr;ptr++;}return0;}A)HELLO,WORLD B)Hello,WorldC)hELLO,wORLD D)hello,world已知:intm=10;在下列定义引用的语句中,正确的是A)int&x=m;B)inty=&m;C)int&z;D)int&t=&m;下列函数原型声明中错误的是A)voidFun(intx=0,inty=0);B)voidFun(intx,inty);C)voidFun(intx,inty=0);D)voidFun(intx=0,inty);已知程序中已经定义了函数 test,其原型是 inttest(int,int,int); ,则下列重载形式中正确的是A)chartest(int,int,int);B)doubletest(int,int,double);C)inttest(int,int,int=0);D)floattest(int,int,float=3.5F);有以下程序#include<iostream>inti=0;voidfun(){{staticinti=1;std::cout<<i++<<',';(24)(24)有以下程序}std::cout<<i<<',';}intmain(){fun();fun();return0;}程序执行后的输出结果是A)1,2,1,2,B)1,2,2,3,C)2,0,3,0,D)1,0,2,0,已知函数 f的原型是: voidf(int*a,long&b); 变量v1、v2的定义是: intv1;longv2;,正确的调用语句是A)f(v1,&v2); B)f(v1,v2);C)f(&v1,v2); D)f(&v1,&v2);有以下类定义classMyClass{public:MyClass(){cout<<1;}};则执行语句 MyClassa,b[2],*p[2];后,程序的输出结果是A)11 B)111 C)1111 D)11111关于友元,下列说法错误的是A)如果类A是类B的友元,那么类 B也是类A的友元B)如果函数 fun()被说明为类 A的友元,那么在 fun()中可以访问类 A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类 A的所有成员函数都是类 B的友元关于动态存储分配,下列说法正确的是A)new和delete是 C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用 delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用 new#include<iostream>usingnamespacestd;classMyClass{public:MyClass(intn){number=n;}//拷贝构造函数MyClass(MyClass&other){number=other.number;}~MyClass(){}private:intnumber;};MyClassfun(MyClassp){MyClasstemp(p);returntemp;}intmain(){MyClassobj1(10),obj2(0);MyClassobj3(obj1);obj2=fun(obj3);return0;}程序执行时, MyClass类的拷贝构造函数被调用的次数是A)5B)4C)3D)2在公有派生的情况下,派生类中定义的成员函数只能访问原基类的A)公有成员和私有成员 B) 私有成员和保护成员C)公有成员和保护成员 D) 私有成员、保护成员和公有成员在 C++中用来实现运行时多态性的是A)重载函数 B) 析构函数C)构造函数 D) 虚函数一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是A)每个派生类的构造函数都要为虚基类构造函数提供实参多继承时有可能出现对基类成员访问的二义性问题使用虚基类可以解决二义性问题并实现运行时的多态性建立最派生类对象时,虚基类的构造函数会首先被调用在一个类体的下列声明中,正确的纯虚函数声明是A)virtualvoidvf()=0;B)voidvf(int)=0;C)virtualintvf(int);D)virtualvoidvf(int){}在下面的运算符重载函数的原型中,错误的是Volumeoperator-(double,double);doubleVolume::operator-(double);VolumeVolume::operator-(Volume);Volumeoperator-(Volume,Volume);下列是模板声明的开始部分,其中正确的是template<T>template<classT1,T2>template<classT1,classT2>template<classT1;classT2>执行语句序列ofstreamoutfile("DATA.DAT");if(...)cout<<"OK";elsecout<<"FAIL";后,如果文件打开成功显示“ OK”,否则就显示“ F厶n。”。由此可知,上面 if语句的...处的表达式应是A)outfile.fail()或outfileB)outfile.good() 或!outfileC)outfile.good()或outfileD)outfile.fail() 或!outfile(32)C++流中重载的运算符 >>是一个( )A)用于输出操作的非成员函数 B)用于输入操作的非成员函数C)用于输出操作的成员函数 D)用于输入操作的成员函数有以下类定义classPoint{public:Point(intx=0,inty=0){_.x=x;_.y=y;}voidMove(intxOff,intyOff){_x+=xOff;_.y+=yOff;}public:public:voidPrint()const{cout<<'('<<_x<<','<<_y<<')'<<endl;}private:int_x,_y;};下列语句中会发生编译错误的是Pointpt;pt.Print();constPointpt;pt.Print();Pointpt;pt.Move(l,2);constPointpt;pt.Move(l,2);有以下类定义classMyClass{private:intid;chargender,char*phone;public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,charge='#',char*ph=NULl.){id=no;gende=ge;phone=ph;}};下列类对象定义语句中错误的是MyClassmyObj;MyClassmyObj(11,);MyClassmyObj(12,'m');MyClassmyObj(12);有以下程序#include<iostream>usingnamespacestd;class-plex{-plex(doubler=0,doublei=0):re(r),im(i){}doublereal()const{returnre;}doubleimag()const{returnim;}-plexoperator+(-plexc)const{return-plex(re+c.re,im+c.im);}private:doublere,im;};intmain(){-plexa=-plex(l,1)+-plex(5);cout<<a.real()<<'+'<<a.imag()<<'i'<<endl;return0;}程序执行后的输出结果是A)6+6iB)6+1iC)1+6iD)1+1i二、填空题 (每空2分,共30分)请将每一个空的正确答案写在答题卡 [1]-[15]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。算法的复杂度主要包括 [1]复杂度和空间复杂度。TOC\o"1-5"\h\z数据的逻辑结构在计算机存储空间中的存放形式称为数据的 [2] 。若按功能划分,软件测试的方法通常分为白盒测试方法和 [3]测试方法。如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在[4]的联系。关系数据库管理系统能实现的专门关系运算包括选择、连接和 [5] 。设有定义语句: inta=12;,则表达式 a*=2+3的运算结果是 [6] 。从实现的角度划分, C++所支持的两种多态性分别是 [7]时的多态性和运行时的多态性。将—个函数声明为一个类的友元函数必须使用关键字 [8] 。请按下面注释的提示,将类 B的构造函数定义补充完整。classA{inta;public:public:A(intaa=0){a=aa;}};classB:publicA{intb;Ac;public://用aa初始化基类 A,用 aa+1初始化类对象成员B(intaa):[9]{b=aa+2;}};下列程序的输出结果是 [10] 。#include<iostream>usingnamespacestd;intmain(){inti=5;int&r=i;r=7;cout<<i<<endl;return0;}下列程序的输出结果是 [11] 。#include<iostream>usingnamespacestd;classTest{public:Test(){.t++;}~Test(){.t--;}staticintCount(){return.t;}private:staticint.t;};intTest::.t=0;intmain()cout<<Test::Count0<<'';Testtl,t2;Test*pT3=newTest;Test*pT4=newTest;cout<<Test::Count0<<'';deletepT4;deletepT3;cout<<Test::Count()<<endl;return0;}下面是用来计算 n的阶乘的递归函数, 请将该函数的定义补充完整。 (注:阶乘的定义是 n!=n*(n-1)*...*2*1)unsignedfact(unsignedn){if(n<=1)return1;return[12];}下列程序的输出结果是 [13] 。#include<iostream>usingnamespacestd;template<tytenameT>Tfun(Ta,Tb){return(a<=b)?:b;}intmain(){cout<<fun(3,6)<<','<<fun(3.14F,6.28F)<<endl;return0;}与成员访问表达式 p->name等价的表达式是 [14] 。下列程序的输出结果是 [15] 。#include<iostream>usingnamespacestd;classbase{(11)D(12)D(13)C(14)D(15)A(11)D(12)D(13)C(14)D(15)Aintn;base(intx){n=x;}virtualvoidset(intm){n=m;cout<<n<<'';}};classderiveA:publicbase{public:deriveA(intx):base(x){}voidset(mtm){n+=m;cout<<n<<'';}};classderiveB:publicbase[public:deriveB(intx):base(x){}voidset(intm){n+=m;cout<<n<<'';}};intmain(){deriveAdl(1);deriveBd2(3);base*pbase;pbase=&dl;pbase->aet(1);pbase=&d2;pbase->set(2);return0;}2004年9月全国计算机等级考试二级笔试试卷公共基础知识及 C++语言程序设计答案及评分标准选择题((1)—(35)每小题2分,共70分)(1)C(2)C(3)B(4)A(5)D(6)B(7)D(8)B(9)C(10)A(16)A(17)D(18)B(19)D(20)C(21)B(22)A(23)B(24)B(25)C(26)D(27)C(28)A(29)A(30)C(31)C(32)B(33)D(34)B(35)B二、填空题 (每空2分,共30分)(1)[1] 时间(2)[2]存储结构 或物理结构 或物理存储结构(3)[3] 黑盒 或黑箱(4)[4]一对多 或1对多或I:M或I:N(其中 M、N大小写均可 )(5)[5] 投影(6)[6]60(7)[7] 编译(8)[8]friend(9)[9]A(aa),c(aa+1)或c(aa+1),A(aa)(10)[10]7(11)[11]042(12)[12]n*fact(n-1)(13)[13]3,3.14(14)[14](*p).name(15)[15]252010年3月计算机等级考试二级 C++笔试试题一、选择题 (每小题2分,共70分)下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。下列叙述中正确的是A)对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 nB)对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为 (n/2)C)对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为 (log2n)D)对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为 (nlog2n)算法的时间复杂度是指A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于系统软件的是A)编辑软件B)操作系统C)教务管理系统D)浏览器软件(程序)调试的任务是A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质数据流程图 (DFD图)是A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于A)定义阶段B)开发阶段C)维护阶段D)上述三个阶段数据库管理系统中负责数据模式定义的语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言在学生管理的关系数据库中,存取一个学生信息的数据单位是A)文件B)数据库C)字段D)记录

数据库设计中,用 E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段有两个关系 R和T如下:则由关系 R得到关系 T的操作是A)选择B)投影C)交D)并下列关于函数的描述中,错误的是A)函数可以没有返回值B)函数可以没有参数C)函数可以是一个类的成员D)函数不能被定义为模板若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是A)1B)2C)3D)4下列关于继承方式的描述中,错误的是(private)A)如果不显式地指定继承方式,缺省的继承方式是私有(private)A)if(x==0)y=1;elsey=2;A)if(x==0)y=1;elsey=2;B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员将前缀运算符“ --”重载为非成员函数,下列原型中,能正确用于类中说明的是A)Decr&operator--(int);B)Decroperator--(Decr&,int);C)friendDecr&operator--(Decr&);D)frlendDecroperator--(Decr&,int);(15)若 MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTempp2;MyTempp3[2];编译系统在处理上面的语句序列时,所生成的模板 MyTemp的实例的个数是A)1B)2C)3D)0(16)在C++中, cin是个A)类B)对象C)模板D)函数(17)在下列字符中,不允许作为 C++标识符的是if语句中正确的是A)bB)BC)_D)2(18)下列叙述中,错误的是A)false是一个逻辑型常量B)"b"是一个字符型常量C)365是一个int常量D)3.1415926是一个double常量(19)若x和yif语句中正确的是D)fun4D)fun4public:public:B)if(x==0)theny=1elsey=2;C)if(x==0)y=1elsey=2;D)ifx==0y=1;elsey=2;要定义整型数组 x,使之包括初值为 O的三个元素,下列语句中错误的是A)intx[3]={0,0,0};B)intx[]={0};C)staticintx[3]={0};D)intx[]={0,0,0};关于函数中的 <返回类型 >,下列表述中错误的是A)<返回类型 >中有可能包含关键字 intB)<返回类型 >中有可能包含自定义标识符C)<返回类型 >中有可能包含字符 *D)<返回类型 >中可能包含 []要定义一个引用变量 p,使之引用类 MyClass的一个对象,正确的定义语句是A)MyClassp=MyClass;B)MyClassp=newMyClass;C)MyClass&p=newMyClass;D)MyClassa,&p=a;有如下两个类定义classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;doubley3;};在类YY中保护成员变量的个数是A)1B)2C)3D)4下列关于运算符重载的描述中,错误的是A)可以通过运算符重载在 C++中创建新的运算符B)赋值运算符只能重载为成员函数C)运算符函数重载为类的成员函数时,第一操作数是该类对象D)重载类型转换运算符时不需要声明返回类型下列关于类模板的描述中,错误的是A)类模板的成员函数都是模板函数B)可以为类模板参数设置默认值C)类模板描述了一组类D)类模板中只允许有一个类型参数下列控制格式输入输出的操作符中,能够设置浮点数精度的是A)setprecisionB)setwC)setfillD)showpoint(27)下列程序段中包含 4个函数,其中具有隐含 this指针的是intfun1();classTest{public:intfun2();friendintfun3();staticintfun4();};A)fun1B)fun2C)fun3有如下程序#includeusingnamespacestd;classTest{public:Test(){}Test(constTest&t){cout<<1;}};Testfun(Test&u){Testt=u;returnt;}intmain(){Testx,y;x=fun(y);return0;}运行这个程序的输出结果是A)无输出B)1C)11D)111有如下程序#includeusingnamespacestd;classA{public:A(inti=0):r1(i){}voidprint(){cout<<'E’<<R1<<'-';}<p>voidprint()const{cout<<'C'<<R1*R1<<'-';}<p>voidprint(intx){cout<<'P'<<R1*R1*R1<<'-';}<p>private:intr1;};intmain(){Aa1;constAa2(4);a1.print(2);a1.print();return0;}运行时的输出结果是A)P8-E4B)P8-C16-C)P0-E4-D)P0-C16-下列代码声明了 3个类classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列关于这些类之间关系的描述中,错误的是A)类Person是类Undergraduate的基类B)类Undergraduate从类 Student公有继承C)类Student是类Person的派生类D)类Undergraduate是类 Person的派生类有如下程序#includeusingnamespacestd;ClassBase{public:Base(intx=0):valB(x){cout<<VALB;}<p>~Base(){cout<<VALB;}<p>private:intvalB;};classDerived:publicBase{public:Derived(intx=0,inty=0):Base(x),valD(y){cout<<VALD;}<p>~Derived(){cout<<VALD;}<p>private:intvalD;};intmain(){Derivedobj12(2,3);retuen0;}运行时的输出结果是A)2332B)2323C)3232D)3223下面是类 Shape的定义:classShape{public:virtualvoidDraw()=0;};下列关于 Shape类的描述中,正确的是A)类Shape是虚基类B)类Shape是抽象类C)类Shape中的Draw函数声明有误D)语句“ Shapes;”能够建立Shape的一个对象 s将运算符“ +”重载为非成员函数,下列原型声明中,错误的是A)MyClockoperator+(MyClock,long);B)MyClockoperator+(MyClock,MyClock);C)MyClockoperator+(long,long);D)MyClockoperator+(long,MyClock);打开文件时可单独或组合使用下列文件打开模式①ios_base::app②ios_base::binary③ios_base::in④ios_base::out若要以二进制读方式打开一个文件,需使用的文件打开模式为A)①③B)①④C)②③D)②④有如下程序:#includeusingnamespacestd;ClassB{public:B(intxx):x(xx){++cout;x+=10;}virtualvoidshow()const{cout<<COUNT<<'_'<<X<<ENDL;}<p>protected:staticintcount;private:intx;};classD:publicB{public:D(intxx,intyy):B(xx),y(yy){++count;y+=100;}virtualvoidshow()const{cout<<COUNT<<'_'<<Y<<ENDL;}<p>private:inty;};intB::count=0;intmain(){B*ptr=newD(10,20);ptr->show();deleteptr;return0;}运行时的输出结果是A)1_120B)2_120C)1_20D)2_20(每空2分,共30分)请将每一个空的正确答案写在答题卡【 l】~【15】序号的横线上,答在试卷上不得分。一个队列的初始状态为空。现将元素 A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为【1】 。设某循环队列的容量为 50,如果头指针 front=45(指向队头元素的前一位置 ),尾指针rear=10(指向队尾元素),则该循环队列中共有 【2】 个元素。设二叉树如下:对该二叉树进行后序遍历的结果为 【3】 。软件是【4】 、数据和文档的集合。有一个学生选课的关系,其中学生的关系模式为:学生 (学号,姓名,班级,年龄 ),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号, 则关系模式选课可定义为: 选课(学号,【5】,成绩)。若x和y是两个整形变量,在执行了语句序列x=5;y=6;y+=x--;后,x+y的值为【6】 。在执行语句序列inti=0;doi++;while(i*i<10);时,do后面的循环体语句 i++被执行的次数为 【7】 。有如下的函数定义:intXfun(int*a,intn){intx=*a;for(int*pa=a+1;pa<>if(*pa>x)x=*pa;returnx;}若执行了语句intx[5]={23,46,78,55,16};后,通过表达式 Xfun(x,5)调用该函数,则得到的返回值为 【8】 。有如下的函数定义:intXfun(intx){inty=x;{intx=10;y+=x;}returnx+y;}通过表达式 Xfun(5)调用该函数,则得到的返回值为 【9】 。假定Xcs是一个类, 该类中一个成员函数的原型为 “Xcs*abc();”,则在类外定义时对应的函数头为 【10】。请将下面的类 Date的定义补充完整,使得由语句DateFirstDay;定义的对象 FirstDay的值为2010年1月1日。classDate{public:Date(【11】 ):year(y),month(m),day(d){}private:intyear,month,day;//依次表示年、月、日};请将下面的程序补充完整,使得程序输出“飘是张娜的书” 。#includeusingnamespacestd;classBook{public:Book(char*str){strcpy(title,str);}【12】voidPrintInfo(){cout<<TITLE<<ENDL;}<p>protected:chartitle[50];};classMyBook:publicBook{public:MyBook(char*s1,char*s2="张娜"):13】 {strcpy(owner,s2);}virtualvoidPrintInfo(){cout<<TITLE<<"是"OWNER<<的书" "<<ENDL;}<p>private:charowner[10];};intmain(){Book*prt=newMyBook("飘");prt->PrintInfo();return0;}在有理数类 Rational中重载插入运算符 <<,以便按 a/q形式输出。请将 <<运算符函数的定义补充完整。classRational{public:Rational(intaa,int.):a(aa),q(.){}friend【14】operator<<(ostream&out,Rational&x){return(out<<X.A<<'p?<<x.q);<>}private:inta,q;};下面的函数定义是某函数模板能够生成的函数实例intsquare(intn){returnn*n;}doublesquare(doublen){returnn*n;}由此可知,该函数模板的定义是 【15】 。2007年4月计算机等级考试 C++考试及答案一、选择题(每小题 2分,共70分)下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是 。A)算法的效率只与问题的规模有关 ,而与数据的存储结构无关 .B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关 .(2)在结构化程序设计中 ,模块划分的原则是 。各模块应包括尽量多的功能各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度 ,模块间具有低耦合度TOC\o"1-5"\h\z(3)下列叙述中正确的是 。A)软件测试的主要目的是发现程序中的错误 .B)软件测试的主要目的是确定程序中错误的位置 .C)为了提高软件测试的效率 ,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误下面选项中不属于面向对象程序设计特征的是 。A)继承性 B)多态性 C)类比性 D)封装性下列对列的叙述正确的是 。队列属于非线性表队列按”先进后出”的原则组织数据C)队列在队尾删除数据D)队列按“先进先出”原则组织数据(6)对下列二叉树A)DYBEAFCZX)BYDEBFZXCA)CABDYECFXZ)DABCDEFXYZ(7)某二叉树中有 n个度为2的结点则该二叉树中的叶子结点数为A)n+1B)n-1C)2nD)n/2(8)在下列关系运算中 ,不改变关系表中的属性个数但能减少元组个数的是A)井 B)交C)投影D)笛卡儿乘积TOC\o"1-5"\h\z(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<classT>Tsouare(Tx) (retumx*x; )基中T是A)函数形参 B)函数实参 C)模板形参 D)模板实参(16)使用输入输出操作符 setw,可以控制A)输出精度 B)输出宽度 C)对齐方式 D)填充字符(17)下列字符串中,不可以用作 C++标识符的是A)y_2006B) TEST__HC)RetumD)switch(18)字面常量 42、4.2、42L的数据类型分别是A)long、doubleintB)long、float、intC)int、double、longD)int、float、long(19)执行下列语句段后,输出字符“ *”的个数是for(inti=50;I>1; —i)cout<<”*”A)48B)49C)50D)51(20)有如下程序段inti=0,j=1;TOC\o"1-5"\h\zint&r=i;// ①r=j;// ②int*p=&i;// ③*p=&r;// ④基中会产生编译错误的语句是A)④ B)③C)② D) ①(21)有如下函数定义:voidfunc(inta,int&b) {a++;b++;}若执行代码段:intx=0,y=1func(x,y);则变量x和y值分别是A)0和1B)1和1C)0和 2D)1和2(22)有如下程序:#include<iostream>usingnamespacestd;classA{publicstaticinta;voidinit() {a=1;}A(inta=2){init() ;a++;}};intA:;a=0Aobj;Intmain(){cout<<obj.a;retum0;}运行时输出的结果是A)0B)1C)2D)3(23)下列有关继承和派生的叙述中,正确的是A) 派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数D)虚函数必须在派生类中重新实现(24)下列运算符中,不能被重载的是A)&& B)!=C).D)++(25)下列函数模板的定义中,合法的是template<typenameT>Tabs(Tx){returnx<0 –x:x;}templateclass<T>Tabs(Tx){retumx<0-x;x;}templateT<classT.>abs(Tx){retumx<0-x;x;}templateTabs(Tx){returmx<0-x;x;}(26)在语句 cin>>data;中,cin是A)C++的关键字 B)类名C)对象名 D)函数名(27)有如下程序:#include<iostream>usingnamespacestd;classtest{private:inta;public:test(){cout<<”constructor”<<endl;}test(inta){cout<<a<<endl;}test(consttest&_test){a=_testa;cout<<”copyconstructor”<<endl;}test(){cout<<”destructor”<<endl;}};intmain()}testA(3)return0;运行时输出的结果是3constructordestruclorcopyconstructor3dstructordestruclor(28)若有如下类声明classMyClass{public:MyClass() {cout<<1;}};执行下列语句MyClassa,b[2],*P[2];以后,程序的输出结果是A)11B)111C)1111D11111(29)有如下程序:#include<iostream>usingnamespacestd;classpoint{public:staticintnumber;public:point(){number++;~point(){number-;}};imtpoint::number=0;voidmain() {point*ptr;printA,B;{point*ptr_point=newpoint{3};ptr=ptr_point;}pointC;cout<<point::number<<endl;delete[]ptr;}运行时输出的结果是A)3B)4C)6D)7(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。#include<iostream>usingnamespacestd;classBase{inta,b;public:Bace(intx,inty){a=x;b=y;}Voidshow() {cout<<a<<’,’<<b<<endl;}}clsaaDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm ):Base(x,y){c=z;d=m;}Voidshow() {cout<<c<<’,’d<<endl;}};intmain(){BaseB1(50,50),*pb;DerivedDI(10,20,30,40);Pb=&D1;Pb->show() ;Return0;}运行时输出的结果是A)10,20B)30,40C)20,30D)50,50(31)有如下程序:#include<iostream>usingnamespacestd;classA{public;A(inti){x=i;}Voidsispa(){cout<<x<<’,’;}Private:intx;};classB;publicA{public;B(inti):A(i+10){x=i;}vouddispb(){dispa();cout<<x<,endl;}Private:Intx;};intmain(){Bb(2);b.dispb()retum0:}运行时输出的结果是A)10,2B)12,10C)12,2D)2,2(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时, ,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:#include<iostream>usingnamespacestd;classBase{public:virtualvoidf(){cout<<”f0+”;}voidg(){cout<<”g0+”;}};classDerived:publicBase{public:voidf() {cout<<”f+”;}voidg() {cout<<”g+”;}};intmain(){Derivedd;Base*p=&d;p->f() ;p->g() ;return0:}运行时输出的结果是A)f+g+B)f0+g+C)f+g0+D)f0+g0+(33)下面程序中对一维坐标点类 Point进行运算符重载#include<iostream>usingnamespacestd;classpoint{public:point(intvaI){x=val;}point&operator++(){x++;retum*this;}printoperator++(int){pointold=*this,++(*this);retumold;}intGetX()const{retumx;}private:intx;};intmain(){TOC\o"1-5"\h\zpointa( 10);cout<<(++a).GetX() ;cout<<a++.GetX() ;retum() ;}编译和运行情况是TOC\o"1-5"\h\zA)运行时输出 1011B)运行时输出 1111C)运行时输出 1112D)编译有错(34)有如下程序:#include<iostream>usingnamespacestd;intmain(){charstr[100],*p;cout<<”pleaseinputastring: ”;cin>>str;p=str;for(inti=0;*p!= ”\0”;p++,i++ );cout<<i<<endl;retum0;}运行这个程序时,若输入字符串为abcdefgabcd则输出结果是A)7B)12C)13D)100(35)有如下程序: :#include<iostream>usingnamespacestd:classSample{friendlongfun(Samples);public:Sample(longa){x=a;}Private:longx;};longfun(Samples){if(s.x<2)retum1;retums.x*fun(Sample(s.x-a));}intmain(){intsum=0for(inti=0;i<6;i++ ){sum+=fun(Sample( i);)}cout<<sum;retum0;}运行时输出的结果是A)120B)16C)154D)34二、填空题(每空 2分,共30分)请将每一个空的正确答案写在答题卡【 1】~【 15】序号的横线上,答在试卷上不得分。TOC\o"1-5"\h\z(1)在深度为 7的满二叉树中,度为 2的结点个数为 【1】 。(2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 【2】 测试。(3)在数据库系统中,实现各种数据管理体制功能的核心软件称为 【3】 。(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 【4】 阶段。(5)在结构化分析使用的数据流图( DFD)中,利用 【5】对其中的图形元素进行确切解释。(6)C++中只有两个逻辑常量: true和【6】 。(7)若要访问指针变量 p所指向的数据,应使用表达式 【7】 。(8)已知一个函数的原型是:intfn(doublex);若要以5.27为实参调用该函数,应使用表达式 【8】 。(9)有如下定义:classMA{intvalue;public:MA(intn=0):valut(n){}};MA*ta,tb;其中 MA类的对象名标识符是 【9】 。(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。ClassmyClass{Private:Intdata:Public:MyClass(intvalue);//构造函数MyClass(const【10】 anotherObject);//拷贝构造函数}(11)用来派生新类的称为 【11】,而派生出的新类称为它的子类或派生类。(12)有如下程序:#include<iostream>usingnamespacestd;clsaaCA{public:CAD{cout<<A’;}};classCB;privateCA{public;CB() {cout<<B’;}};intmain() {cout<<B’;}};intmain() {CAa;CBb;retum0;}这个程序的输出结果是 【12】 。(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是 【13】个。(14)有如下程序:#include<iostream>66、falseusingnamespacestd;classDA{intk;public:DA(intx=1):k(x){}~DA() {cout<<k;}};intmain() {DAd[]={DA(3),DA(3),DA(3)};DA*p=newDA[2];delete[]p;return0;}这个程序的输出结果是 【14】 。(15)C++语言中的多态性分为编译时的多态性和 【15】时的多态性。2007年4月计算机等级考试 C++考试答案选择题:1-5BDACD6-10CABCA11-15BADAC16-20BCDBA21-25CCCCA26-30CDBDA30-35CBBBC填空:1、632、黑盒3、DBMS4、开发5、数据字典

*Pfn(5.27)tbmyclass&11、基类AAB1个1133315、运行2007年9全国计算机等级考试二级笔试试卷 C++语言程序设计90分钟,满分 100分)2分,共70分)A、B、C、D四个选项重,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1) 软件是指程序和文档程序、数据与相关文档的完整集合A程序 程序和文档程序、数据与相关文档的完整集合C算法加数据结构 D(2)软件调试的目的是A发现错误 B 改正错误C改善软件的性能 D验证软件的正确性3)在面对对象方法中,实现信息隐蔽是依靠对象的多态对象的继承对象的多态C对象的封装 D 对象的分类4)下列叙述重,不符合良好程序设计风格要求是A程序的效率第一,清晰第二 B程序的可读性好C 程序中要有必要的注释D 输入数据前要有提示信息5)下列叙述中正确的是A 程序执行的效率与数据的存储结构密切相关B 程序执行的效率只取决于程序的控制结构C 程序执行的效率之取决于所处理的数据量D 以上三种说法都不对6)下列叙述中正确的是A 数据的输入结构与存储结构必定是——对应的B 计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C 程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D 以上三种说法都不对(8)一棵二叉树中共有 70个叶子结点于 80个度为1的结点,则该二叉树重的总结点数为A219B221C229D221(9)下列叙述重正确的是A 数据库系统是一个独立的系统,它需要操作系统的支持B 数据库技术的根本目标是要解决数据的共享问题C 数据库管理系统是数据库系统D 以上说法都不正确(10)下列叙述中正确的是A 为了建立一个关系,首先是要构造数据的逻辑关系B 表示关系的二维表中各各组的每一个分量还可以分成若干数据项C 一个关系的属性名称为关系模式D 一个关系可以包括多个二维表(11)在函数中,可以用 auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是AautoBextemCregisterDstaticC C 循环语句的循环体12)对于一个类定义,下列叙述中错误的是A 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以 public方式继承基类,则原基类的 protected成员和public成员在派生类中的访问类型分别是Apublic和public Bpublic 和protectedCprotected和public Dprotected 和protected(14)下列运算符函数中肯定不属于类 FunNumber的成员函数的是Aintoperator-(FunNumber)BFunNumberoperator-()CFunNumberoperator-(int)Dintoperator –(FunNumber)15)C++中的模板包括A对象模板和函数模板 B 对象模板和类模板C函数模板和类模板 D 变量模板和对象模板如果调用 C++流进行输入输出,下面的叙述中正确的是A 只能借助于流对象进行输入输出B 只能进行格式化输入输出C只能借助于 cin和cout进行输入输出D 只能使用运算符 》和《 进行输入输出(17)下列富豪中不属于 C++关键字的是AfriendBnamespaceCcontinueDbyte(18)下列各组的量申明中,含义相同的一组是Aunsignedlongint 和longBsignedshortint 和shortBunsignedshort和shortDshortint 和int(19)必须用一对打括号括起来的程序段是Aswitch语句中的 case标号语句Bif语句的分支D函数的函数体(20)语句的 int*p=&k定义于指针 P,于这个语句等效的语句序列是Aint*p;p=&k Bint*p;p=kCint*p;*p=&k Dint*p;*p=k(21)关于函数重载,下列叙述中错误的是A 重载函数的函数名必须相同B 重载函数必须在函数个数或类型上有所不同C 重载函数的返回值类型必须相同D 重载函数的函数体可以有所不同(22)有如下头文件Intf1();Staticintf2();ClassMA{PublicIntf3();Staticintf4();};在所描述的函数中,具有隐含的 this指针的是Af1Bf2Cf3Df4(23)派生类的成员函数不能访问基类的A共有成员和保护成员 B共有成员C私有成员 D 保护成员(24)下列关于运算符重载的描述中,正确的是A运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符B一元运算符只能作为成员函数重载C二元运算符重载为非成员函数时,参数表中有一个参数DC++中可以重载所有的运算符(25)下列关于类模板的模板参数的叙述中,错误的是A模板参数可以作为数据成员的类型B模板参数可以作为成员函数的返回类型C模板参数可以作为成员函数的参数类型D模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是Cout<<setw(10)<<setfill(*)<<1234则此操作的输出结构是A1234B******12341234D1234******(27)有如下程序#include<iostrcam>Usingnamespacestd;Classmyclass{Public:MyClass(){++count;}~MyClass(){--count;}Staticintgetcount(){returncount;}PrivateStaticintcount;};IntMyClass::count=0;Intmain(){Myclassobj;Cout<<obj,getCount();MyClass*ptr=newMyClass;Cout<<MyClass::getcount();Deleteptr;Cout<<MyClass::gercount();Return();}程序的输出结果是A121B232C221D122程序的输出结果是Aval=10const:val=20Bconst:val=10const:val=20Cconst:val=10val=20Dval=10val=20有如下程序#include<iostream>Usingnamespacestd;Classpart{Public;Part(intx=(\):val(x){cout,,val;}-part(){cout<<val;}Private;Intval;};Classwhole{Public;Whole(intx,inty,intz=0):p2(x),p1(y),val(z){cout<<val;}Whole(){count,,val;}Private;Partp1,p2;Intval;};Intmaint{Wholeobj(1,2,3);Resturn();程序输出的结果是A123321B213312C213有如下程序:#include<iostream>Usingnamespacestd;Classbase{Public:Base(intx=0){cout<<x;}};Classderived:publicbase{Public:Derivedrin(x=y){cout<<x;}Priblic:Baseval;};Intmain(){Derivedd(!);Return();}程序的输出结果是A0B1C01D001(31)若有如下类定义:ClasssB{Voidfun(){}Protected;Doublevarl;Public:Voidfun2(){}};ClassD:publicB{Protected;Voidfun3(){}};已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是Aobj.fun1();Bobj.var1;Cobj.fun2();Dobj.fun3();(32)有如下程序:#include<iostream>Usingnamespacesid;Classbase{Public;Voidoutput(){cout<<1;}Virtualvoidprint(){cout<<B;}};Classderived:publicbase{Public:Voidoutput(){cout<<2;}Voidprint(){cout<< ’D’;}};Intmain()Base*passnewderived;Ptr->output();Ptr->print();Deleteptr;Return();}程序的输出结果是A1BB1DC2BD2D下列是重载乘法运算的函数原型声明,其中错误的是Amyclassoperator*(double,double);Bmyclassoperator*(double,myclass);Cmyclassoperator*(myclass,double);Dmyclassoperator*(myclass,myclass);

(35)有如下程序:(35)有如下程序:#include<iostream>Usingnamespacestd:ClassB{Public:Virtualvoidshow(){cout<< ”b”;}};ClassD:publicB{Public:Voidshow(){cout<<D;}};Voidfun1(B*ptr){ptr->show();}Voidfun2(B&ref){ref.show();}Voidfun3(Bb){b.show();}Intmain(){Bb,*p=newD;Dd;Fun1(p);Fun2(b);Fun3(d);Return();}程序的输出结果是ADBDBBBDCDBBDDBD2分,共三十分).请将每一个空的正确答案写在答题卡【 1】~【15】序号的横线上,答在试卷上不得分。.软件需求规格说明书应具有完整性、无歧视性、正确性、可验证性、可修改性等特征,最重要的是.在两种基本测试方法中 测试的原则之一是保证所测模板中每一个独立路径至少要执行一次。.线性表的存储结构主要分为顺序存储结构和链式储存结构。队列中是一种特殊的线性表。循环队列是队列的 存储结构。.对下列二叉树进行中序遍历的结果为 ..在E-R图中,矩形属于 在有定义语句: inta=3,b=2,c=1;则表达式 a<b?a:b的值是 .执行下列语句后,变量 sum的值是 .Intsum=0;For(intj=I;j<=I;j++)For(intj=I;j<=I;j++)Sum++;.已知有函数 f的定义如下:Intf(){Staticint-6;s-2;returns}则在某程序中第二次执行函数用语句 f();时,函数f的返回值是 已知如下程序得输出结果时 23,请将划线处缺失得部分补充完整。#include<iostream>Usingnamespacestd;Classmyclass{Public:Voidprint()cout{cout<<23;}}Intmain(){Myclass*p=newmyclass(); print();Return();Classsample{Public:Sample(){}请将如下程序补充完整,使得输出结果为 bbaa#include<iostream>Usingnamespacestd;ClassA{Public: {cout<< ”aa”;}};ClassB:publicA{Public:~B(){cout<< ”bb”;}};Intmain(){B*p=newB;Deletep;Return();}请将下列栈类 stack补充完整Classstack{Private;Intplist[100];//int 数组,用于存放栈的元素Inttop;// 栈顶元素(数组下标)Public:Stack():top(0){}新元素item压入栈新元素item压入栈};Intpop(void);//将栈顶元素弹出栈Voidstack::pbsh(constint&item){If(top==99) // 如果栈满,程序结束Exit(1);Top++; // 栈顶指针增 1___ 【15】 ;}Intstack::pop(){If(top<0) // 如果栈空,程序结束Exit(1);Returnplish[top--];}参考答案1-10:DBCAACCABB11-20:ABDDCADBDA21-30:CCCADBACDC31-35:CDAAD无歧性逻辑覆盖链式ACBDFHGPE实体9.(*p).ABBA.voidBase::fun().virtualdisplay()==0;14.-A()15.pList[top]=item2008年9月计算机等级考试二级 C++笔试试题一、选择题(每小题 2分,共70分)(1)一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( B)。A)123456ABCDE B)EDCBA54321C)ABCDE123

温馨提示

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

评论

0/150

提交评论