国家二级(C++)机试模拟试卷173
(总分:86.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.程序流程图中带有箭头的线段表示的是( )。
(分数:2.00)
 A.图元关系
 B.数据流
 C.控制流 
 D.调用关系
解析:解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。
2.结构化程序设计的基本原则不包括( )。
(分数:2.00)
 A.多态性 
 B.自顶向下
 C.模块化
 D.逐步求精
解析:解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
3.软件设计中模块划分应遵循的准则是( )。
(分数:2.00)
 A.低内聚低耦合
 B.高内聚低耦合 
 C.低内聚高耦合
 D.高内聚高耦合
解析:解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。
4.在软件开发中,需求分析阶段产生的主要文档是( )。
(分数:2.00)
 A.可行性分析报告
 B.软件需求规格说明书 
 C.概要设计说明书
 D.集成测试计划
解析:解析:A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,软件需求规格说明书是后续工作如设计、编码等需要的重要参考文档。
5.算法的有穷性是指( )。
(分数:2.00)
 A.算法程序的运行时间是有限的 
 B.算法程序所处理的数据量是有限的
 C.算法程序的长度是有限的
 D.算法只能被有限的用户使用
解析:解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。
6.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n一1)/2的排序方法是( )。
(分数:2.00)
 A.快速排序
 B.冒泡排序
 C.直接插入排序
 D.堆排序 
解析:解析:除了堆排序算法的比较次数是0(nlo2n),其他的都是n(n—1)/2。
7.下列关于栈的叙述正确的是( )。
(分数:2.00)
 A.栈按“先进先出”组织数据
 B.栈按“先进后出”组织数据 
 C.只能在栈底插入数据
 D.不能删除数据
解析:解析:栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。
8.在数据库设计中,将E—R图转换成关系数据模型的过程属于( )。
(分数:2.00)
 A.需求分析阶段
 B.概念设计阶段
 C.逻辑设计阶段 
 D.物理设计阶段
解析:解析:E—R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。
9.有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为( )。
(分数:2.00)
 A.并
 B.自然连接
 C.笛卡尔积
 D.交 
解析:解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C错误。根据关系T可以很明显地看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D。
10.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。
(分数:2.00)
 A.课号,成绩
 B.学号,成绩
 C.学号,课号 
 D.学号,姓名,成绩
解析:解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C。
11.下列语句中,错误的是( )。
(分数:2.00)
&st int buffer=256;
&st int temp; 
&st double*point;
&st double*rt=new double(5.5);
解析:解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*dolable point形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。
12.有如下程序: int x=3; do{ x-=2: cout<
(分数:2.00)
 A.1
 B.3 0
 C.1-2 do while语句流程图
 D.死循环
解析:解析:本题考查do…while语句,执行do…while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行
循环体内的语句,输出1,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。
13.有如下程序: #include using namespace std; int main() { int*p; *p=9; cout<<"The value at p:"<
(分数:2.00)
 A.编译时出现语法错误,不能生成可执行文件
 B.运行时一定输出:The value at p:9
 C.运行时一定输出:The value at p:*9
 D.运行时有可能出错 
解析:解析:先定义指针变量,然后给指针变量赋初值有三种情况:①用取地址运算符“&”将变量地址赋给指针变量,如p=&a;②将一个指针变量中的地址赋给另一个指针变量,如p=p1;③给指针变量赋空值0,如q=0,表示该指针变量不指向任何变量。而不能用一个常量给指针变量赋初值,所以本题选D。
14.if语句的语法格式可描述为: 格式1:if() 或 格式2:if() else 关于上面的语法格式,下列表述中错误的是( )。
(分数:2.00)
 A.<条件>部分可以是一个if语句,例如if(if(a==0)…)… 
 B.<语句>部分可以是一个if语句,例如if(…)if(…)…
 C.如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变
 D.<语句>部分可以是一个循环语句,例如if(…)while(…)…
解析:解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。
15.下列符号中,正确的C++标识符是( )。
(分数:2.00)
&um
 B.2b
 C.foo-9
 D._32 
解析:解析:本题考查C++标识符的命名规则,规定如下:①所有标识符可以由字母、数字和下画线组成,且必须以字母或下画线开头;②C++的关键字不能作为标识符;③大、小写字母表示不同意义,即代表不同的标识符,如mun和Mun。A选项是C++的关键字,B选项不能以数字开头,C选项“一”不能用于组成标识符。
16.下列关于C++函数的说明中,正确的是( )。
(分数:2.00)
 A.内联函数就是定义在另一个函数体内部的函数
 B.函数体的最后一条语句必须是return语句
 C.标准C++要求在调用一个函数之前,必须先声明其原型
 D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 
解析:解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以A选项错误。函数可以没有返回值,所以就不需要return了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以C选项错误,正确选项为D。
17.运算符重载是对已有的运算符赋予多重含义,因此( )。
(分数:2.00)
 A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
 B.可以改变一个已有运算符的优先级和操作数个数
 C.只能重载C++中已经有的运算符,不能定义新运算符 
 D.C++中已经有的所有运算符都可以重载
解析:解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能列已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
18.下列有关内联函数的叙述中,正确的是( )。
(分数:2.00)
 A.内联函数在调用时发生控制转移
 B.内联函数必须通过关键字inline来定义
 C.内联函数是通过编译器来实现的 
 D.内联函数函数体的最后一条语句必须是return语句
解析:解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用
它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。
19.下列运算符不能重载为友元函数的是( )。
(分数:2.00)
 A.=( )( ) -> 
 B.+ - ++ --
 C.> < >= <=
 D.+= -= *=/=
解析:解析:关于运算符重载为友元函数有如下规定:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符“=、()、[]、->”不能重载为类的友元函数。所以本题答案为A。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。