1、国家二级(C+)机试模拟试卷 154 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,属于非线性结构的是( )。(分数:2.00)A.循环队列B.带链队列C.二叉树D.带链栈2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:2.00)A.循环队列B.栈C.队列D.二叉树3.对于循环队列,下列叙述中正确的是( )。(分数:2.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针4.算法的空间复杂度是指( )。(分数:2.00)
2、A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数5.软件设计中划分模块的一个准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合6.下列选项中不属于结构化程序设计原则的是( )。(分数:2.00)A.可封装B.自顶向下C.模块化D.逐步求精7.软件详细设计产生的图如下: (分数:2.00)A.N-S 图B.PAD 图C.程序流程图D.E-R 图8.数据库管理系统是( )。(分数:2.00)A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操
3、作系统9.在 ER 图中,用来表示实体联系的图形是( )。(分数:2.00)A.椭圆形B.矩形C.菱形D.三角形10.有三个关系 R,S 和 T 如下: (分数:2.00)A.选择B.投影C.交D.并11.下列符号中可以用做 C+标识符的是( )。(分数:2.00)A._radiusB.foobarC.elseD.3room12.下列各组类型声明符中,含义相同的一组是( )。(分数:2.00)A.unsigned long int 和 longB.signed short int 和 shortC.unsigned short 和 shortD.short int 和 int13.必须用一对大
4、括号括起来的程序段是( )。(分数:2.00)A.switch 语句中的 cage 标号语句B.if 语句的分支C.循环语句的循环体D.函数的函数体14.语句 int*p= void Score:Sort() *found* for(int i=0;i n 一 1; *found* for(int j= ;ji;j 一一) if(_Sj_Sj 一 1) 交换_sj和_sj 一 1 double t=Sj; /* found* _;: /* found* _; int main() const int NUM=10; double SNUM; srand(time(0); for(int i=0
5、;iNUM;i+) Si=double(rand()RAND MAX*100; Score SS(S,NUM); SSSort(); for(int J=0;jNUM;j+) coutSSGetScore(j)endl; return 0; (分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 pmj3 下的工程文件 proj3,此工程中包含一个源程序文件 proj3cpp,其中定义了用于表示平面坐标系中的点的类 MyPoint 和表示矩形的类 MyRectangle;程序应当显示: (0,2)(2,2)(2,0)(0,0)4
6、但程序中有缺失部分,请按照以下提示,把缺失部分补充完整: (1)在“*1*,*found*”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对 up_left 和 down_right 进行初始化。 (2)在“*2* *found*”的下方是成员函数getDownLeft 的定义中的一条语句。函数 getDownLeft 返回用 MyPoint 对象表示的矩形的左下角。 (3)在“*3* *found*”的下方是成员函数 area 的定义,它返回矩形的面积。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。/proj3cpp#includ
7、eiostreamusing namespace std;class MyPoint表示平面坐标系中的点的类 double x; double Y;public: MyPoint(double x,double y)this-x=x;this-Y=Yj) double getX()constreturn x; double getY()constreturn Y; void show()constcout(x,y);class MyRectangle 表示矩形的类 MyPoint up_left; 矩形的左上角顶点 MyPoint down_right;矩形的右下角顶点 public:MyRe
8、ctangle (MyPoint upleft, My-Point downright); MyPoint getUpLeft()constreturn up_left;) 返回左上角坐标 MyPo int getDownRight()cons t return down right;) 返回右下角坐标 MyPoint getUpRight()Const;返回右上角坐标 MyPoint getDownLeft()const;返回左下角坐标 double area()const;返回矩形的面积 ; *1* *found* MyRectangle:MyRectangle(_): up_left(p
9、1),down_right(p2)MyPoint MyRectangle: getUpRight()const return MyPoint(down_rightgetX(),up_leftgetY();MyPoint MyRectangle: getDOwnLeft()const *2* *found* return MyPoint(_);*3* *found*_area()const return(getUpLeft()getX()一 get- DownRight()getX()* (getDownRight ()getY()一getUpLeft()getY(); int main() M
10、yRectangle r(MyPoint(0,2),MyPoint (2,0); rgetUpLeft()show(); rgetUpRight()show(); rgetDownRight()show(); rgetDownLeft()show(); couutrarea()endl; return 0; (分数:2.00)_国家二级(C+)机试模拟试卷 154 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,属于非线性结构的是( )。(分数:2.00)A.循环队列B.带链队列C.二叉树 D.带链栈解析:解析:树是简单的非线性
11、结构,所以二叉树作为树的一种也是一种非线性结构。2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:2.00)A.循环队列B.栈 C.队列D.二叉树解析:解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。3.对于循环队列,下列叙述中正确的是( )。(分数:2.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针 解析:解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时也可能小于队尾指针。4
12、.算法的空间复杂度是指( )。(分数:2.00)A.算法在执行过程中所需要的计算机存储空间 B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数解析:解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择 A。5.软件设计中划分模块的一个准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。6.下列选项中不属于结构化程序设计原则的是( )。(分数:2.00)A.可封装
13、B.自顶向下C.模块化D.逐步求精解析:解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A。7.软件详细设计产生的图如下: (分数:2.00)A.N-S 图B.PAD 图C.程序流程图 D.E-R 图解析:解析:NS 图提出了用方框图来代替传统的程序流程图,所以 A 不对。PAD 图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以 B 不对。ER 图是数据库中的用于表示 ER 模型的图示工具,所以 D 不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。8.数据库管理系统是( )。(
14、分数:2.00)A.操作系统的一部分B.在操作系统支持下的系统软件 C.一种编译系统D.一种操作系统解析:解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。9.在 ER 图中,用来表示实体联系的图形是( )。(分数:2.00)A.椭圆形B.矩形C.菱形 D.三角形解析:解析:在 ER 图中实体集用矩形,属性用椭圆,联系用菱形。10.有三个关系 R,S 和 T 如下: (分数:2.00)A.选择B.投影C.交D.并 解析:解析:并关系 T 中包含了关系 R 与 s 中的所有元组,所以进行的是并的
15、运算。11.下列符号中可以用做 C+标识符的是( )。(分数:2.00)A._radius B.foobarC.elseD.3room解析:解析:本题考查 c+标识符的命名规则,其规则有如下几点:所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;所有标识符不能使用 C+已有的关键字;大、小写字母表示不同意义,即代表不同的标识符。选项 B 包含了字符“”,选项 C 是关键字,选项 D 不能以数字开头。故答案为 A。12.下列各组类型声明符中,含义相同的一组是( )。(分数:2.00)A.unsigned long int 和 longB.signed short int 和 sh
16、ort C.unsigned short 和 shortD.short int 和 int解析:解析:本题考查整型变量的类型,A、C 选项中前者为无符号的,后者为有符号的,D 选项中 short int 为 2 个字节,int 为 4 个字节。13.必须用一对大括号括起来的程序段是( )。(分数:2.00)A.switch 语句中的 cage 标号语句B.if 语句的分支C.循环语句的循环体D.函数的函数体 解析:解析:本题考查 C+基本控制结构,A、B、c 三个选项中的大括号不是必须的,而 D 选项中的函数体必须使用大括号。14.语句 int*p= void Score:Sort() *fo
17、und* for(int i=0;i n 一 1; *found* for(int j= ;ji;j 一一) if(_Sj_Sj 一 1) 交换_sj和_sj 一 1 double t=Sj; /* found* _;: /* found* _; int main() const int NUM=10; double SNUM; srand(time(0); for(int i=0;iNUM;i+) Si=double(rand()RAND MAX*100; Score SS(S,NUM); SSSort(); for(int J=0;jNUM;j+) coutSSGetScore(j)end
18、l; return 0; (分数:2.00)_正确答案:(正确答案:(1)i+ (2)_n1 (3)_sj =_sj 一 1 (4)_sj-1=t)解析:解析:(1)主要考查 for 循环语句,从题目要求可知循环变量 i 要从 0 到_n-2,因此 i 要递增操作,即 i+。 (2)主要考查考生对冒泡排序的掌握,这里要求从后往前扫描,比较相邻两个元素,若后者小则交换,因此在这里下标 j 要从最后开始,即 int j=_n 一 1。 (3)考查交换算法,在 if 语句中_sj四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 pmj3 下的工程文件
19、 proj3,此工程中包含一个源程序文件 proj3cpp,其中定义了用于表示平面坐标系中的点的类 MyPoint 和表示矩形的类 MyRectangle;程序应当显示: (0,2)(2,2)(2,0)(0,0)4 但程序中有缺失部分,请按照以下提示,把缺失部分补充完整: (1)在“*1*,*found*”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对 up_left 和 down_right 进行初始化。 (2)在“*2* *found*”的下方是成员函数getDownLeft 的定义中的一条语句。函数 getDownLeft 返回用 MyPoint 对象表示的矩形的左下角。
20、(3)在“*3* *found*”的下方是成员函数 area 的定义,它返回矩形的面积。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。/proj3cpp#includeiostreamusing namespace std;class MyPoint表示平面坐标系中的点的类 double x; double Y;public: MyPoint(double x,double y)this-x=x;this-Y=Yj) double getX()constreturn x; double getY()constreturn Y; void sho
21、w()constcout(x,y);class MyRectangle 表示矩形的类 MyPoint up_left; 矩形的左上角顶点 MyPoint down_right;矩形的右下角顶点 public:MyRectangle (MyPoint upleft, My-Point downright); MyPoint getUpLeft()constreturn up_left;) 返回左上角坐标 MyPo int getDownRight()cons t return down right;) 返回右下角坐标 MyPoint getUpRight()Const;返回右上角坐标 MyPoi
22、nt getDownLeft()const;返回左下角坐标 double area()const;返回矩形的面积 ; *1* *found* MyRectangle:MyRectangle(_): up_left(p1),down_right(p2)MyPoint MyRectangle: getUpRight()const return MyPoint(down_rightgetX(),up_leftgetY();MyPoint MyRectangle: getDOwnLeft()const *2* *found* return MyPoint(_);*3* *found*_area()co
23、nst return(getUpLeft()getX()一 get- DownRight()getX()* (getDownRight ()getY()一getUpLeft()getY(); int main() MyRectangle r(MyPoint(0,2),MyPoint (2,0); rgetUpLeft()show(); rgetUpRight()show(); rgetDownRight()show(); rgetDownLeft()show(); couutrarea()endl; return 0; (分数:2.00)_正确答案:(正确答案:(1)MyPoint p1,My
24、Point p2 (2)up_leftgetX(),down_rightgetY() (3)double MyRectangle:)解析:解析:(1)考查构造函数,构造函数中的参数要给私有成员赋值,在下句中 up_left(p1),down_right(p2)指出私有成员赋值要使用形参 p1 和 p2,因此这里参数要定义为 MyPointp1,MyPoint p2。 (2)主要考查成员函数的返回语句,MyPoint My Rectangle:getDownldt()const 函数要求返回一个左下角的点坐标,因此使用语句 MyPoint(up_leftgax(),down_rightgetY();。 (3)主要考查成员函数的定义,在 MyRectangle 类中已经声明 double area()const,因此此处只要添加 double MyRect-angle:即可。