下载此文档

全国计算机等级考试无纸化真考题库试卷二级C++(1).pdf


文档分类:资格/认证考试 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
该【全国计算机等级考试无纸化真考题库试卷二级C++(1) 】是由【小屁孩】上传分享,文档一共【18】页,该文档可以免费在线阅读,需要了解更多关于【全国计算机等级考试无纸化真考题库试卷二级C++(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)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(rt一1)/2的排序方法是()。A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)F列关于栈的叙述正确的是()。A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E~R图转换成关系数据模型的过程属于()。A)需求分析阶段B)概念设计阶段C)逻辑设计阶段:..D)物理设计阶段(9)有三个关系R、,则所使用的运算为()。A)并B)自然连接C)笛卡尔积D)交(10)设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课Sc(学号,课号,成绩),则表Sc的关键字(键或码)为()。A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(1I)下列语句中,错误的是()。A)constintbuffer:256;B)constinttemp;C)constdouble*point;D)constdouble*rt=newdouble();(12)有如下程序:intx=3:do{x-=2;COU[<<X:}while(!(--X));执行这个程序的输出结果是()。A)1B)30C)1—2D)死循环(13)有如下程序:﹟nclude<iostream>usingnamespacestd;intmain(){int*P;*P=9:cout<<”Thevalueatp:”<<*p;return0;}编译运行程序将出现的情况是()。A)编译时出现语法错误,不能生成可执行文件:..B)运行时一定输出:l'llevalueatP:9C)运行时一定输出:lllevalueatP:*9D)运行时有可能出错(14)if语句的语法格式可描述为:格式l:if(<条件>)<语句>或格式2:if(<条件>)<语句l>else<语句2>关于上面的语法格式,下列表述中错误的是()。A)<条件>部分可以是一个if语句,例如if(if(a==0)?)?B)<语句>部分可以是一个if语句,例如if(?)if(?)?C)如果在<条件>前加上逻辑非运算符!并交换<语句l>和<语句2>的位置,语句功能不变D)<语句>部分可以是一个循环语句,例如if(?)while(?)?(15)下列符号中,正确的c++标识符是()。A)enumB)2bC)f00一9D)_32(16)下列关于c++函数的说明中,正确的是()。A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准c++要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(17)运算符重载是对已有的运算符赋予多重含义,因此()。A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B)可以改变一个已有运算符的优先级和操作数个数C)只能重载c++中已经有的运算符,不能定义新运算符D)C++中已经有的所有运算符都可以重载(18)下列有关内联函数的叙述中,正确的是()。A)内联函数在调用时发生控制转移B)内联函数必须通过关键字inline来定义C)内联函数是通过编译器来实现的D)内联函数函数体的最后一条语句必须是return语句(19)下列运算符不能重载为友元函数的是()。A)=()()->B)+-++--C)><>=<=D)+=-=*=/=(20)有如下程序:#include<iostream>usingnamespaeestd;intmain(){voidfunction(doubleval);:..doubleval:function(val);eout<<val:return0;}voidfunction(doubleval){val=3;}编译运行这个程序将出现的情况是()。A)编译出错,无法运行B)输出:3C)输出:)输出一个不确定的数(21)下面是重载为非成员函数的运算符的函数原型,其中错误的是()。A)Fractionoperator+(Fraction,Fraction);B)Fractionoperator一(Fraction);C)Fraction&operator=(Fraction&,Fraction);D)Fraction&operator+=(Fraction&,Fraction);(22)有如下类定义:classMyClass{public:private:______________________________________intdata;};若要为MyClass类重载流输入运算符“>>”,使得程序中可以“cin>>obj;”的形式改变MyClass类的对象0bj中数据成员data的值,则横线处的声明语句应为()。A)friendistream&operator>>(istream&is,MyClass&a);B)friendistream&operator>>(istream&is,MyClassa);C)istream&operator>>(istream&is,MyClass&a);D)istream&operator>>(istream&is,MyClassa);(23)由于常对象不能被更新,因此()。A)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数(24)有如下类定义:classAA{ima:public::..intgetRef()const{return&a;}//①intgetValue()const{returna;}//②voidset(intn)const{a=n;}//③friendvoidshow(AAaa)const{cout<<a;}//④};其中四个函数的定义中正确的是()。A)①B)②c)③D)④(25)下列关于this指针的描述中,正确的是()。A)类的成员函数都有this指针B)类的友元函数都有this指针c)任何与类相关的函数都有this指针D)类的非静态成员函数都有this指针(26)下列关于虚函数的说明中,正确的是()。A)从虚基类继承的函数都是虚函数B)虚函数不得是静态成员函数c)只能通过指针或引用调用虚函数D)抽象类中的成员函数都是虚函数(27)下列关于基类和派生类关系的叙述中,正确的是()。A)每个类最多只能有一个直接基类B)派生类中的成员可以访问基类中的任何成员c)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员,还可以定义新的成员(28)有如下类定义:classB{public:voidfunl(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicBjprotected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。A)();B)();C)();D)();(29)有如下类定义:classFoo{:..public:Foo(intv):value(V){}//①~Foo(){}//②private:Foo(){}//③intvalue=0://④};其中存在语法错误的行是()。A)①B)②c)③D)④(30)有如下类定义:classPoint{;public:Point():xx(0),yy(0){}Point(intx,intY=0):xx(X),YY(Y){}};若执行语句Pointa(2),b[3],幸c[4];则Point类的构造函数被调用的次数是()。A)2次B)3次C)4次D)5次(31)有如下类定义:classTest{public:Test(){a=0;c=0;}//①intf(ima)const{this->a=a;}//②staticintg(){returna;f//③voidh(intb){Test:.b=b;};//④private:inta;staticintb;constintC;};intTest::b=0:在标注号码的行中,能被正确编译的是()。A)①B)②:..c)③D)④(32)有如下类声明:classSAMPLE{intn:public:SAMPLE(inti=0):n(i){}voidsetValue(intnO);};下列关于9etValue成员函数的定义中,正确的是()。A)SAMPLE::setValue(intnO){n=n0;}B)voidSAMPLE::setValue(int胡){n=n0;C)voidsetValue(intnO){n=n0;}D)setValue(intnO){n=n0;}(33)有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout<<”A”;}-A(){cout<<”-A”;}};classB:publicA{A*P;public:B(){cout<<”B”;P=newA();}-B(){cout<<”~B”;deletep;}};intmain(){Bobj;return0;}执行这个程序的输出结果是()。A)BAA~A~B~AB)ABA~B~A~AC)BAA~B~A~AD)ABA~A~B~A(34)有如下程序:#include<iostream>usingnamespacestd;classBase{:..private:voidfunl()const{tout<<”funl”;}protected:voidfun2()const{tout<<”fun2”;}public:voidfun3()const{cout<<”fhll3”;}};classDerived:protectedBase{public:voidfhn4()const{cout<<”filn4”;}};intmain(){Derivedobj;();//①();//②();//③();//④returnU:}其中有语法错误的语句是()。A)①②③④B)①②③C)②③④D)①④(35)有如下程序:#include<iostream>usingnamespacestd;classBasel{public:BaseI(intd){cout<<d;}一Basel(){}};classBase2{public:Base2(intd){tout<<d;}~Base2(){}};classDerived:publicBasel,Base2{public::..Derived(inta,intb,intc,intd):Basel(b),Base2(a),bl(d),b2(c){}private:intbl:intb2:};intmain(){Derivedd(1,2,3,4);return0;}执行这个程序的输出结果是()。A)1234B)2134C)12D)21(36)有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfunl(){cout<<”Base\n”;}virtualvoidfun2(){eout<<”Base\n”;}};classDerived:publicBase{public:voidfunl(){eout<<”Derived、n”;}voidfura(){eout<.<”Derived\n”;}};voidf(Base&b)}();();}intmain(){Derivedobj;f(obj);return0;}执行这个程序的输出结果是()。A)BaseB)BaseC)DerivedD)DerivedBaseDerivedBaseDerived(37)模板对类型的参数化提供了很好的支持,因此()。A)类模板的主要作用是生成抽象类:..B)类模板实例化时,编译器将根据给出的模板实参生成一个类C)在类模板中的数据成员都具有同样类型D)类模板中的成员函数都没有返回值(38)有如下函数模板:template<>Teast(Uu)ireturnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A)cast(i);B)cast<>(i);C)east<char*,int>(i);D)east<double,int>(i);(39),下列语句中错误的是()。A)ifstreamfin=(””);B)ifstream*fin=newifstream(””);C)ifstreamfin;(””);D)ifstream*fin=newifstream();fin->open(””);(40)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为()。A)ios—base::inB)ios—base::inliosbase::0utC)losbase;:0utD)ios_base::in&ios_base::0ut二、基本操作题(共l8分)请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程含有一个源程序文件pn,。其中位于每个注释“//ERROR木}}水found}}水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Thevalueisl0注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//#include<iostream>usingnamespacestd;classMyClass{intvalue;public://ERROR********found*********voidMyClass(intval):value(val){}intGetValue()const{returnvalue;}voidSetValue(intval);};//ERROR********found********:..inlinevoidSetValue(intval){value=val;}intmain()MyClassobj(O);(10);//ERROR********found********下列语句功能是输出obj的成员value的值tout<<”Thevalueis”<<<<endl:return0;}三、简单应用题(共24分)请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,,其中定义了Stack类和ArrayStack类。Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:公有成员函数功能push入栈:在栈顶位置添加一个元素pop退栈:取出并返回栈顶元素ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:a,b,CC,b,a注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****料found****”。//#include<iostream>std;classStack{public:virtualvoidpush(charC)=0;virtualcharpop()=0;};classArrayStack:publicStack{char*P;intmaxSizc;inttop;public:ArravStack(ints){top=0;maxSize=s://*********found*********:..P=______;}~ArrayStack(){//*********found*********_______;}voidpush(charc)}if(top==maxSize){cerr<<”Overflow!\n”:return;}//*********found*********_______;top++:}charpop(){if(top==0){cerr<<”Underflow!、n”;return‘\0’;}Top--;//*********found*********______;}};voidf(Stack&sRef){charch[]={‘a’,‘b’,‘c’};cout<<ch[0]<<”,”<<ch[1]<<”,”<<ch[2]<<endl;(oh[0]);(ch[1]);(ch[2]);cout<<()<<”,”;cout<<()<<”,”;cout<<()<<endl;}intmain(){ArrayStackas(10);f(as):return0:}四、综合应用题(共l8分):..请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,,补充编制c++,,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,。。要求:补充编制的内容写在“//**********”与“//**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。注意:,输出函数writeToFile已经给出并且调用。//#include<iostream>#include<fstream>#include<catting>usingnamespacestd;classdoc{private:char*sir;//文本字符串首地址intlength;//文本字符个数public://构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址doc(char*filename);voidreverse();//将字符序列反转一doc();voidwriteToFile(char*filename);};doc::doc(char}filename){ifstreammyFile(filename);intlen=1001,tmp;atr=newchar[1en];length=0;while((trap=())!=EOF){str[1ength++]=trap;}str[1ength]=‘\0’;();}voiddoc::reverse(){//将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个//字符交换??:..//*************333*************//*************666*************}doc::~doe(){delete[]str;}voiddoc::writeToFile(char*filename){OfstreamoutFile(filename);outFile<<str;();}voidmain(){docmyDoc(””);();(””);}参考答案及解析无纸化真考题库试卷(1)一、选择题(1)C【解析】在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。(2)A【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。(3)B【解析】软件没计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽町能的高。(4)B【解析】A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,软件需求规格说明书是后续工作如设计、编码等需要的重要参考文档。(5)A【解析】算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。(6)D【解析】除了堆排序算法的比较次数是0(nlog2n),其他的都是n(n—1)/2。(7)B【解析】栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。(8)c【解析】E—R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。:..(9)D【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以8错误。笛卡尔积是用R集合中元素为第一元素,s集合中元素为第二元素构成的有序对,所以C错误。根据关系T可以很明显地看出是从关系R与关系s中取得相同的关系组所以取得是交运算,选择D。(10)C【解析】学号是学生表s的主键,课号是课程表c的主键,所以选课表sc的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择c。(11)B【解析】eonst是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化:,B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*doublepoint形式,则为常指针,必须在定义时进行初始化,A、c、D都正确。(12)c【解析】本题考查do...while语句,执行do...while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出1,然后判断表达式,为非零,且此时X为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为c。(13)D【解析】先定义指针变量,然后给指针变量赋初值有三种情况:①用取地址运算符“&”将变量地址赋给指针变量,如P=&a;②将一个指针变量中的地址赋给另一个指针变量,如P=p1;③给指针变量赋空值0,如q=0,表示该指针变量不指向任何变量。而不能用一个常量给指针变量赋初值,所以本题选D。(14)A【解析】本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。(15)D【解析】本题考查c++标识符的命名规则,规定如下:①所有标识符可以由字母、数字和下画线组成,且必须以字母或F画线开头;②c++的关键字不能作为标识符;③大、小写字母表示不同意义,即代表不同的标识符,如mun和Mu0。A选项是C++的关键字,B选项不能以数字开头,C选项“一”不能用于组成标识符。(16)c【解析】一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以A选项错误。函数可以没有返回值,所以就不需要return了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以C选项错误,正确选项为D。(17)C【解析】重载运算符的规则如下:①c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②c++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是c++的标准类型。故本题答案为c。(18)c【解析卜一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。(19)A【解析】关于运算符重载为友元函数有如下规定:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符“=、()、[]、->”不能重载为类的友元函数。所以本题答案为A。(20)D【解析】本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。:..(21)c【解析】本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则,本题答案为c,c项正确原型为:Fractionoperator=(Fraction&)。(22)A【解析】本题考查重载流运算符“>>”,根据重载规则,本题答案为A。(23)A【解析】本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。(24)B【解析】本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。(25)D【解析】this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。(26)B【解析】

全国计算机等级考试无纸化真考题库试卷二级C++(1) 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小屁孩
  • 文件大小553 KB
  • 时间2024-03-27