《2009年9月计算机等级考试二级C++模拟试题1291.pdf》由会员分享,可在线阅读,更多相关《2009年9月计算机等级考试二级C++模拟试题1291.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2009 年 9 月计算机等级考试二级 C+模拟试题 笔试部分 一、选择题 1.算法分析的目的是()A.找出数据结构的合理性 B.找出算法中输入和输出之间的关系 C.分析算法的易懂性和可靠性 D.分析算法的效率以求改进 【参考答案】D 2.在单链表中,增加头结点的目的是()A.方便运算的实现 B.使单链表至少有一个结点 C.标识表结点中首结点的位置 D.说明单链表是线性表的链式存储实现 【参考答案】A 3.软件开发离不开系统环境资源的支持,其中必要的测试数据属于()A.硬件资源 B.通信资源 C.支持软件 D.辅助资源 【参考答案】D 4.分布式数据库系统不具有的特点是()A.数据分布性和逻辑
2、整体性 B.位置透明性和复制透明性 C.分布性 D.数据冗余 5.下列数据模型中,有坚实理论基础的是()A.层次模型 B.网状模型 C.关系模型 D.以上 3 个都是 【参考答案】C 6.栈底至栈顶依次存放元素 A、B、C、D,在第五个元素 E 入栈前,栈中元素可以出栈,则出栈序列可能是()A.ABCED B.DCBEA C DBCEA D.CDABE 【参考答案】B 7.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的()A.安全性 B.一致性 C.可理解性 D.合理性 【参考答案】C 8.软件开发的结构化生命周期方法将软件生命周期划分成()A.
3、定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段 C.总体设计、详细设计、编程调试 D.需求分析、功能定义、系统设计 【参考答案】A 9.数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有()A.特定的数据模型 B.数据无冗余 C.数据可共享 D.专门的数据管理软件 【参考答案】A 10.实体是信息世界中广泛使用的一个术语,它用于表示()A.有生命的事物 B.无生命的事物 C.实际存在的事物 D.一切事物 【参考答案】C 11.下列关于 C+语言类的描述错误的是()A.类用于描述事物的属性和对事物的操作 B.类与类之间通过封装而具有明确的独立性 C.类与类之间必须是平
4、等的关系,而不能组成层次结构 D.类与类之间可以通过一些方法进行通信和联络 【参考答案】C 12.以下叙述中正确的是()A.构成 C+语言程序的基本单位是类 B.可以在一个函数中定义另一个函数 C.main()函数必须放在其他函数之前 D.所有被调用的函数一定要在调用之前进行定义 【参考答案】A 13.以下程序的输出结果是()#include void reverse(int a,int n)int i,t;for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;void main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reve
5、rse(b,8);for(i=6;i10;i+)s+=bi;couts;A.22 B.10 C.34 D.30 【参考答案】A 14.设有数组定义:char array=China;,则数组 array 所占的空间为()A.4 个字节 B.5 个字节 C.6 个字节 D.7 个字节 【参考答案】C 15.下面的哪个选项不能作为函数的返回类型?()A.void B.int C.new D.long 【参考答案】C 16.下面程序输出的结果是()#include void main()int i;int a33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)couta 2-i i
6、;A.1 5 9 B.7 5 3 C.3 5 7 D.5 9 1 【参考答案】B 17.下列描述中哪个是正确的?()A.私有派生的子类无法访问父类的成员 B.类 A 的私有派生子类的派生类 C 无法初始化其祖先类 A 对象的属性,因为类 A 的成员对类 C 是不可访问的 C.私有派生类不能作为基类派生子类 D.私有派生类的所有子孙类将无法继续继承该类的成员 【参考答案】B 18.如果友元函数重载一个运算符时,其参数表中没有任何参数是说明该运算符是()A.一元运算符 B.二元运算符 C.选项 A 和选项 B 都可能 D.重载错误 【参考答案】D 19.下列关于模板的说法正确的是()A.模板的实参
7、在任何时候都可以省略 B.类模板与模板类所指的是同一概念 C.类模板的参数必须是虚拟类型的 D.类模板中的成员函数全部都是模板函数 【参考答案】D 20.下面程序段的运行结果是()void main()int t,a,b,c;a=1;b=2;c=2;while(abc)t=a;a=b;b=t;c-;couta,b,next=&b;D.(*p).next=q;【参考答案】B 23.以下都是 C+语言标识符的是()A.dsfa,df4,f B.huhj,a,k2 C.3k,h,j_9 D._ok,jk,k8 【参考答案】D 24.设以下变量均为 int类型,则值不等于 7 的表达式是()A.(x=
8、y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)【参考答案】C 25.while和 do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比 do-while的循环控制条件更 严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 【参考答案】A 26.若二维数组 a 有 m 列,则计算任一元素 a i j 在数组中相对位置的公式为(假设 a 0 0 位于数组的第一个位置上)()A.i*m+j B.j*m+i C.
9、i*m+j-1 D.i*m+j+1 【参考答案】A 27.下面叙述不正确的是()A.派生类一般都用公有派生 B.对基类成员的访问必须是无两义性的 C.赋值兼容则也适用于多重继承的组合 D.基类的公有成员在派生类中仍然是公有的 【参考答案】D 28.关于友元的概念错误的是()A.友元函数没有 this指针 B.调用友元函数时必须在它的实参中给出要访问的对象 C.一个类的成员函数也可以作为另一个类的友元函数 D.只能在类的公有段声明友元 【参考答案】D 29.下面程序的结果是()#include class test private:int num;public:test();int getint
10、()return num;test();test:test()num=0;test:test()coutDestructor is activeendl;void main()test x3;coutExiting mainendl;A.Exiting is actice Destructor is active Destructor is active Destructor is active B.Exiting main Destructor is active Destructor is active C.Exiting main Destructor is active D.Exiti
11、ng main 【参考答案】A 30.下列语句不能够用于打开 C 根目录下文件 test.txt 的语句是()A.ifstream fin;fin.open(C:test.txt);B.ifstream fin(C:test.txt);C.A 和 B D.ifstream fin;fin(C:test.txt);【参考答案】D 31.下列关于 C+函数的描述中正确的是()A.主函数是程序的入口,它由用户定义的函数调用 B.函数在调用之前必须先被声明 C.每个用户定义的函数只能被其他函数调用一次 D.函数是 C+中面向对象程序设计框架的基本组成单元 【参考答案】B 32.下列程序的运行结果为()
12、#include class Location protected:int X,Y;public:void SetX(int myx)X=myx;void SetY(int myy)Y=myy;void showxy()coutX=X Y=Yendl;class Rectangle:public Location private:int H,W;public:void SetH(int myh)H=myh;void SetW(int myw)W=myw;void show()coutX=X Y=Y H=H W=Wendl;void main()Rectangle r1;r1.SetX(3);r
13、1.SetY(5);r1.SetH(4);r1.SetW(6);r1.showxy();r1.show();A.X=3 Y=5 B.X=3 Y=5 X=3 Y=5 H=4 W=6 X=3 Y=5 H=3 W=6 C.X=3 Y=5 D.X=3 Y=5 X=3 Y=4 H=4 W=6 X=3 Y=3 H=4 W=6 【参考答案】A 33.有以下程序#include void main()int a=5,b=0,c=0;if(a=b+c)cout*endl;else cout1;i-)for(j=0;ji;j+)A.20 B.261 C.15 D.25 【参考答案】A 35.下列程序的输出结果是(
14、)#include void main()int a3,i,j,k=2;for(i=0;i3;i+)ai=i;for(i=0;ik;i+)for(j=0;jk;j+)a j=ai;couta2;A.2 B.3 C.1 D.0 【参考答案】A 二、填空题 1.将代数式 _ 换成程序设计中的表达式为【1】。X*X+Y*Y Z=-a+b 【参考答案】【1】SORT(x2+y2)/(a+b)2.【2】是数据库设计的核心。【参考答案】【2】数据模型 3.测试的目的是暴露错误,评价程序的可靠性;而【3】的目的是发现错误的位置并改正错误。【参考答案】【3】调试 4.在面向对象的设计中,用来请求对象执行某一处
15、理或回答某些信息的要求称为【4】。【参考答案】【4】消息 5.常用的黑箱测试有等价分类法、【5】、因果图法和错误推测法 4 种。【参考答案】【5】边值分析法 6.【6】是 C+语言程序的入口。【参考答案】【6】main()函数 7.C+语言的基本控制结构为顺序结构、选择结构和【7】。【参考答案】【7】循环结构 8.函数重载要求重载的函数必须有和原函数一样的【8】。【参考答案】【8】函数名 9.设置虚基类的目的是【9】,通过【10】表示虚基类。【参考答案】【9】解决二义性问题 【10】用关键字 virtual 10.语句 coutn还可表示为【11】。【参考答案】【11】coutendl;11.
16、若已知 a=10,b=20,则表达式!ab 的值为【12】。【参考答案】【12】1 12.友元类的所有成员函数都是另一个类的【13】。【参考答案】【13】友元函数 13.表达式 x.operator+()还可写成【14】。【参考答案】【14】+x 14.若要在 C 盘根目录下作为二进制文件打开文件 test.dat,则应该用的语句是:【参考答案】【15】ifstream fin(C:test.dat,ios_binary);或 ifstream fin;fin.open(c:test.dat,ios_bin 上机部分 一、改错题 使用 VC6 打开考生文件夹下的工程 kt2_1,此工程包含一个
17、源程序文件 kt2_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:Vehiclemessage Carmessage Vehiclemessage 源程序文件 kt2_1.cpp清单如下:#include classvehicle intwheels;floatweight;public:voidmessage(void)coutCarmessagen;classtruck:publicvehicle intpassenger_load;floatpayload;public:intpassengers(void)returnpassenger_load;voidm
18、ain()vehicle*unicycle;unicycle=newvehicle;unicycle.message();deleteunicycle;unicycle=newcar;unicycle-message();deleteunicycle;unicycle=newtruck;unicycle-message();deleteunicycle;【参考答案】(1)将 void message(void)coutVehicle messagen;改为:virtual void message(void)coutCar messagen;改为:void message(void)coutm
19、essage();【试题解析】(1)主要考查对虚函数使用规则的掌握,要实现对函数 message的动态联编应该使用虚函数,否则产生的是静态联编,调用的函数输出结果就与要求不符;(2)主要考查对流输出操作的掌握,该处错误的使用了流输入操作;(3)主要考查对象和对象指针的概念,对象指针使用-调用成员函数,而对象使用.调用成员函数。二、简单应用题 编写类 AA 的成员函数 intCompare(AAb),该函数用于比较*this与 b 的大小,若两者含有元素的个数 n 相同,并且数组中前 n 个元素值对应相同,则认为两者相等返回 1,否则返回 0。注意:用数组方式及 for循环来实现该函数。输出结果
20、如下:a=b ac 注意:部分源程序已存在文件 kt2_2.cpp中。请勿修改主函数 main和其他函数中的任何内容,仅在函数 Compare的花括号中填写若干语句。文件 kt2_2.cpp的内容如下:#include#include classAA int*a;intn;intMS;public:voidInitAA(intaa,intnn,intms)if(nnms)coutError!endl;exit(1);MS=ms;n=nn;a=newintMS;for(inti=0;in;i+)ai=aai;intCompare(AAb);intAA:Compare(AAb)voidmain()
21、AAa,b,c;intx=1,2,3,4,5;inty=1,2,3,6,7;intz=1,2,5,7,9;a.InitAA(x,3,5);b.InitAA(y,3,5);c.InitAA(z,3,5);if(a.Compare(b)couta=bendl;else coutabendl;if(a.Compare(c)couta=cendl;else coutacendl;【参考答案】int AA:Compare(AA b)if(n!=b.n)return 0;for(int i=0;in;i+)if(ai!=b.ai)return 0;return 1;【试题解析】本题考查应用 for循环、i
22、f 条件控制语句等基本控制结构解决实际问题的能力。3 综合应用题 使用 VC6打开考生文件夹下的工程 test17_3,此工程包含一个源程序文件 kt2_3.cpp,其中定义了用于表示点的类 Point和表示内容的类 Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。(1)定义类 Point的构造函数,请使用参数列表的形式将成员函数 x 和 y 分别初始化为参数 x1 和 y1 的值。请在注释“/*1*”之后添加适当的语句。(2)完成类 Text的构造函数 Text(char*str)的定义,将 char型的 str指向的内
23、容赋值给 text并且输出 str所指向的内容,请在注释“/*2*”之后添加适当的语句。(3)定义类 CircleWithText的构造函数 CircleWithText(intcx,intcy,char*msg),int型的 cx 和 cy 用于赋值给 x 和 y,char型的指针*msg用于赋值给 text,请在注释“/*3*”之后添加适当的语句。输出结果如下:Point:34 hello 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序如下:#include#include classPoint intx,y;public:/*1*coutPoint:xyn;Point
24、();classText chartext100;public:Text(char*str)/*2*Text();classCircleWithText:publicPoint,publicText public:/*3*CircleWithText();voidmain()CircleWithTextcm(3,4,hello);【参考答案】(1)Point(int x1=0,int y1=0):x(x1),y(y1)(2)strcpy(text,str);coutstrn;(3)CircleWithText(int cx,int cy,char*msg):Point(cx,cy),Text(msg)【试题解析】本题主要考查考生对于多继承中类的定义和派生类构造函数的定义的掌握。注意学会使用参数列表的形式定义派生类的构造函数,在列表中的格式是基类名 1(向基类传递的参数列表),基类名 2(向基类传递的参数列表)。