全国计算机等级考试等级考试真题库之选择题(14)1.一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。
A) 12345ABCDEB) EDCBA54321C) ABCDE12345D) 54321EDCBA参考答案:B【解析】栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。
2.下列叙述中正确的是()。
A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D) 循环队列中元素的个数是由队头指针和队尾指针共同决定参考答案:D【解析】循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A)错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B)与C)错误。
3.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
A) O(n)B) O(n2)C)D)参考答案:C【解析】当有序线性表为顺序存储时才能用二分法查找。
可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较次,而顺序查找需要比较n次。
4.下列叙述中正确的是()。
A) 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C) 顺序存储结构能存储有序表,链式存储结构不能存储有序表D) 链式存储结构比顺序存储结构节省存储空间参考答案:A【解析】链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)与C)错误。
链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D)错误。
5.数据流图中带有箭头的线段表示的是()。
A) 控制流B) 事件驱动C) 模块调用D) 数据流参考答案:D【解析】数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。
6.在软件开发中,需求分析阶段可以使用的工具是()。
A) N-S图B) DFD图C) PAD图D) 程序流程图参考答案:B【解析】在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表,所以选择B)。
7.在面向对象方法中,不属于"对象"基本特点的是()。
A) 一致性B) 分类性C) 多态性D) 标识唯一性参考答案:A【解析】对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。
所以选择A)。
8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A) 一对一B) 一对多C) 多对一D) 多对多参考答案:B【解析】因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。
9.在数据管理技术发展的三个阶段中,数据共享最好的是()。
A) 人工管理阶段B) 文件系统阶段C) 数据库系统阶段D) 三个阶段相同参考答案:C【解析】数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。
10.有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。
A) 笛卡尔积B) 交C) 并D) 自然连接参考答案:D【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。
11.以下不能用于描述算法的是A) 文字叙述B) 程序语句C) 伪代码和流程图D) E-R图参考答案:D【解析】算法的描述有伪代码、流程图、N-S结构图等。E-R是实体联系模型。所以选择D。12.以下选项中合法的实型常量是A) 0B) 3.13e-2.1C) .914D) 2.0*10参考答案:C【解析】A选项为整型数据。B选项中e后面必须为整数。D选项是表达式,不是常量,所以选择C。13.以下叙述中正确的是A) a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数B) 在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式C) 若有int a=4,b=9; 执行了a=b后,a的值已由原值改变为b的值,b的值变为0D) 若有int a=4,b=9; 执行了a=b;b=a;之后,a的值为9,b的值为4参考答案:B【解析】B选项中a是实型变量,a=10在C语言中是允许的,但是实型变量中不可以存放整型数。C选项中执行a=b后,a的值变为b的值,为9,b的值不变,仍为9。D选项中执行a=b后,a的值为9,b的值为9,执行b=a后,a的值为9,b的值也为9,所以选择B。14.以下选项中合法的变量是A) 5aB) _10_C) A%D) sizeof参考答案:B【解析】变量的命名要符合标识符的命名规则,即由下划线、字母或数字组成,且必须以下划线或字母开始,也不能和关键字相同,所以选择B。15.不能正确表示数学式的表达式是A) a/c*bB) a*b/cC) a/ b* cD) a*(b/c)参考答案:C解析】/号和*号的优先级处于平级,结合性都是自左至右。所以选择C,C式子表示的是b ca*。16.有以下程序#include <stdio.h>main(){ int a=3;printf("%d\n", ( a+=a-=a*a ));}程序运行后的输出结果是A) 3B) 9C) 0D) -12参考答案:D【解析】首先计算a*a,结果为9,然后执行a=a-9,即3-9,结果为-6,然后执行a=(-6)+(-6),即a=的值为-12。所以选择D。17.若变量已正确定义,以下选项中非法的表达式是A) a!=4||'b'B) 'a'=1/2*(x=y=20,x*3)C) 'a' % 4D) 'A' + 32参考答案:B【解析】A选项中'a'即表示a为字符常量,再给'a'赋值1/2*(x=y=20,x*3),是不正确的。
因此B 选项正确。
18.有以下程序#include <stdio.h>main(){ int x=35, B; char z='B' ;B = (( x ) && ( z <'b' ));printf("%d\n", B );}程序运行后的输出结果是A) 1B) 0C) 35D) 66参考答案:A【解析】本题重点考察逻辑运算符和关系运算符的相关知识,已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为'B'。
语句B=((x)&&(z<'b'));中,(x)的值为1,'B'的asscii 码小于'b'的asscii码,所以(z<'b')的值也为1,1&&1结果为1。
因此A选项正确。
19.与数学表达式x≥y≥z对应的C语言表达式是A) (x>=y)||(y>=x)B) (x>=y>=z)C) (x>=y)!(y>=z)D) (x>=y)&&(y>=z)参考答案:D【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<=y和y<=z 是逻辑与的关系。
因此D选项正确。
20.有以下程序#include <stdio.h>main(){ double x=2.0, y;if( x<0.0 ) y=0.0;else if( (x<5.0) && (!x) ) y=1.0 / ( x+2.0 );else if( x<10.0 ) y=1.0 / x;else y=10.0;printf(" %f\n ", y );}程序运行后的输出结果是A) 0.000000B) 0.250000C) 0.500000D) 1.000000参考答案:C【解析】本题重点考察if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if((x<5.0)&&(!x)),即条件为0,继续执行if( x<10.0 ),条件为1,即执行y=1.0 / x;。
依据printf ()函数输出类型中f是以小数形式输出单、双精度实数。
因此C选项正确。
21.有以下程序#include <stdio.h>main(){ int i, sum;for( i=1; i<6; i++ ) sum+=i;printf("%d\n", sum);}程序运行后的输出结果是A) 随机值B) 0C) 15D) 16参考答案:A【解析】本题重点考察for语句,变量没有初始化的情况下,默认值与编译器有关系,不同的编译器有不同的值。
因此A选项正确。
22.有以下程序#include <stdio.h>main(){ int a = 3;do{ printf("%d,", a-=2 ); }while( ! (--a) );printf("\n");}程序运行后的输出结果是A) 1B) 1, -2,C) 3,0,D) 1,0参考答案:B【解析】本题重点考察do……while语句,该循环语句的特点是,先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。
因此, do-while循环至少要执行一次循环语句。
变量a赋初值为3,每循环一次需执行语句a-=2一次,同时循环条件使变量a自减1,所以第一次循环后变量a变为1,第2次循环后变量a变为-2。
因此A选项正确。
23.有以下程序#include <stdio.h>void fun( int a, int b, int c ){ a=b; b=c; c=a; }main(){ int a=10 , b=20, c=30;fun( a, b, c );printf("%d,%d,%d\n",c,b,a);}程序运行后的输出结果是A) 10,20,30B) 30,20,10C) 20,30,10D) 0,0,0参考答案:B【解析】函数调用中发生的数据传送是单向的。