国家二级C++机试(选择题)模拟试卷468
选择题
1.下列关于栈和队列的描述中,正确的是( )。(D)
A. 栈是先进先出
B. 队列是先进后出
C. 队列允许在队头删除元素
D. 栈在栈顶删除元素
解析:栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。
2.有如下程序:
int x=3
do{
x-=2
cout<<x
}while(!(–x));
执行这个程序的输出结果是( )。(C)
A. 1
B. 3 0
C. 1.2
D. 死循环
解析:此题考查的是do-while循环语句。do-while循环首先执行do语句中的循环体,再判断是否需要继续执行循环。题目中do语句“x=2”,while语句中“–x”即x为0,取反为非0,循环继续执行;执行“x-=2”和“–x”取反后,循环结束程序退出。
3.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。(C)
A. 10
B. 8
C. 6
D. 4
解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
4.有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
则数值为9的表达式是( )。(B)
A. *P+9
B. *(P+8)
C. *P+=9
D. P+8
解析:本题考查指向数组的指针,本题中指针变量p指向数组a,那么,*p的值就是1,即表示数组的第一个元素,那么数值为9的表达式就是将指针向后移动8个地址,即p+8指向的是数组元素值为9,所以数值为9的表达式是术(p+8)。
5.冒泡排序在最坏情况下的比较次数是(C)
A. n(n+1)/2
B. nlog2n
C. n(n-1)/2
D. n/2
解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
6.程序执行后的输出结果是( )。
#include<iostream.h>
void main()
{ char flag=’c’;
switch(flag)
{ case ’a’:cout<<’’1’’<<end1;
case ’b’:cout<<’’2’’<<end1:break;
case ’c’:cout<<’’3’’<<end1;
default :cout<<’’4’’<<end1;break;
}
}(C)
A. 12
B. 23
C. 34
D. 45
解析:因为flag=’c’,所以执行cout<<\\
7.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。
8.下列选项中不属于结构化程序设计方法的是( )。(D)
A. 自顶向下
B. 逐步求精
C. 模块化
D. 可复用
解析:结构化程序设计方法的主要原则可以概括为:自项向下,逐步求精,模块化,限制使用goto语句。自顶向下是指程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进一步分解成具体的小目标,把每个小目标称为一个模块。可复用性是指软件元素不加修改成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要力法,不属于结构化程序设计方法。
9.设有如下关系表:
(C)
A. T=R/S
B. T=R×S
C. T=R∩S
D. T=R∪S
解析:T就是关系R中有的,同时S中也有的有序组(4、5、6),即交运算(∩)。
10.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。(A)
A. 控制流
B. 加工
C. 存储文件
D. 源和潭
解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。
11.下列符号中可以用作C++标识符的是( )。(A)
A. _radius
B. foo~bar
C. else
D. 3room
解析:此题考查的是C++语言中标识符的定义。标识符有字母、数字和下划线构成,其第一个字母必须是字母或下划线;定义标识符时,不要采用系统的保留字。
12.执行语句序列( )。
int i=0;
while(i<25)i+=3;
cout<<i;
输出结果是(C)
A. 24
B. 25
C. 27
D. 28
解析:此题考查的是循环语句while的使用。i为3的倍数,当i=24时,i<25,执行while的循环体i+=3,则i=27,不满足j<25的条件,结束循环。
13.有如下程序:
#include
using namespace std;
class B{
public:
B(int xx):x(xx){++count;x+=10;}
virtual void show()const
{cout<<count<<I_f<<x<<endl;)
protected:
static int count;
private:
int x;
); .
class D:public B{
Public
本文档预览:3600字符,共8572字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载