国家二级C++机试(选择题)模拟试卷500
选择题
1.有如下程序:
#include
using namespace std;
int main(){
int i,s=0;
for(i=l;s<20;i+=2)s+=i*i;
cout<<i<<endl;
return 0:
)
运行这个程序的输出结果是( )。(C)
A. 3
B. 5
C. 7
D. 9
解析:在这段程序中for循环共执行3次,每次循环变量i的值增2,在执行第二次循环语句时,变量s的值等于25,大于20而退出循环,此时再执行循环变量i加2运算,所以最后变量i的值等于7。
2.假定MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。(D)
A. void~MyClass();
B. ~MyClass(int n);
C. MyClass();
D. ~MyClass();
解析:C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。
3.对下列二叉树
(C)
A. DYBEAFCZX
B. YDEBFZXCA
C. ABDYECFXZ
D. ABCDEFXYZ
解析:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:①访问根结点;②前序遍历左子树;③前序遍历右子树。可见,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是ABDYECFXZ。
4.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(D)
A. 冒泡排序为n/2
B. 冒泡排序为n
C. 快速排序为n
D. 快速排序为n(n-1)/2
解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。
5.构成计算机软件的是( )。(D)
A. 源代码
B. 程序和数据
C. 程序和文档
D. 程序、数据及相关文档
解析:软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
6.软件设计中划分模块的一个准则是( )。(B)
A. 低内聚低耦合
B. 高内聚低耦合
C. 低内聚高耦合
D. 高内聚高耦合
解析:耦合性与内聚性是模块独立性的两个定性标准。一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
7.下面不能作为结构化方法软件需求分析工具的是( )。(A)
A. 系统结构图
B. 数据字典(DD)
C. 数据流程图(DFD图)
D. 判定表
解析:按照DeMarco的定义,“结构化分析就是使用数据流图(DFD图)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。”系统结构图不能作为结构化方法软件需求分析工具。
8.对于循环队列,下列叙述中正确的是( )。(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时也可能小于队尾指针。
9.下列代码段中声明了3个类:
class Person{};
class Student:public Person{};
class Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是( )。(B)
A. 类Person是类Undergraduate的基类
B. 类Undergraduate从类Student公有继承
C. 类Student是类Person的派生类
D. 类Undergraduate是类Person的派生类
解析:本题考查基类和派生类的逻辑关系,属于基础知识,如果没有指明哪种继承方式,那么默认为私有继承,所以B选项错误。
10.在E-R图中,用来表示实体的图形是( )。(A)
A. 矩形
B. 椭圆形
C. 菱形
D. 三角形
解析:在E-R图中,用矩形表示实体集,在矩形内写上该实体集的名字;用椭圆形表示属性;用菱形(内部写上联系名)表示联系。
11.下列语句中,与语句“1n=(a>b?(1)>c?1:0):0);”的功能等价的是( )。(C)
A. if(a<=b) n=0;
B. if((a>b)Il(b>c))n=1;else n=0;
C. if(a>b)if(b>c) n=1:else n=0;else n=0;
D. if(a>b) n=1;else if(<=c)n=1;else if(b>c)n=1;else n=0;
解析:条件表达式(a>b?(b>c?1:0):0)的含义是,如果a>b成立,则此表达式的值等于条件表达式(b>c?1:0)的值,否则其值等于0。而条件表达式(b>c?1:0)的含义是,如果b>c成立,其值等于1,否则其值等于0。
12.有如下程序:
#include
using namespace std;
class Base{
public:
virtual void function l() {cout<<‘0’;)
void function20 {cout<<‘1’;)
);
class Derived:public Base{
public:
void functionl0 {cout<<’2’;}
void function20 {cout<<’3’;)
};
int main(){
Base*P=new Derived();
P一>functionl();
p->function2();
return O:
};
运行时的输出结果是( )。(B)
A. 01
B. 21
C. 03
D. 23
本文档预览:3600字符,共8692字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载