一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A) 12345ABCDE
B) EDCBA54321
C) ABCDE12345
D) 54321EDCBA
参考答案:B
【解析】栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。
下列叙述中正确的是( )。
A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D) 循环队列中元素的个数是由队头指针和队尾指针共同决定
参考答案:D
【解析】循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A)错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B)与C)错误。
在长度为n的有序线性表中进行二分查,最坏情况下需要比较的次数是( )。
A) O(n)
B) O(n2)
C)
D)
参考答案:C
【解析】当有序线性表为顺序存储时才能用二分法查。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查只需要比较次,而顺序查需要比较n次。
下列叙述中正确的是( )。
A) 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C) 顺序存储结构能存储有序表,链式存储结构不能存储有序表
D) 链式存储结构比顺序存储结构节省存储空间
参考答案:A
【解析】链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)与C)错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D)错误。
数据流图中带有箭头的线段表示的是( )。
A) 控制流
B) 事件驱动
C) 模块调用
D) 数据流
参考答案:D
【解析】数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。
在软件开发中,需求分析阶段可以使用的工具是( )。
A) N-S图
B) DFD图
C) PAD图
D) 程序流程图
参考答案:B
【解析】在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表,所以选择B)。
在面向对象方法中,不属于"对象"基本特点的是( )。
A) 一致性
B) 分类性
C) 多态性
D) 标识唯一性
参考答案:A
【解析】对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A)。
一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A) 一对一
B) 一对多
C) 多对一
D) 多对多
参考答案:B
【解析】因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。
在数据管理技术发展的三个阶段中,数据共享最好的是( )。
A) 人工管理阶段
B) 文件系统阶段
C) 数据库系统阶段
D) 三个阶段相同
参考答案:C
【解析】数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。
有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。
A) 笛卡尔积
B) 交
C) 并
D) 自然连接
参考答案:D
【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。
下列叙述中错误的是( )。
A) C程序可以由多个程序文件组成
B) 一个C语言程序只能实现一种算法
C) C程序可以由一个或多个函数组成
D) 一个C函数可以单独作为一个C程序文件存在
参考答案:B
【解析】在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。
以下选项中,能用作数据常量的是( )。
A) 115L
B) 0118
C) 1.5e1.5
D) o115
参考答案:A
【解析】A)选项中115L表示115是长整型数据,合法。B)选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B)错误。C)选项中e后面应该是整数不能是小数1.5,所以C)错误。D)选项中八进制常量应该是数字"0"开始,而不是字母"o"开始。
按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
A) 大写字母
B) 下划线
C) 数字字符
D) 连接符
参考答案:D
【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D)选项中的连接符不合法。
设变量已正确定义并赋值,以下正确的表达式是( )。
A) x=y+z+5, ++y
B) int(15.8%5)
C) x=y*5=x+z
D) x=25%5.0
参考答案:A
【解析】B)与D)选项中取模运算符%的左右两个操作数均应为整数,所以B)、D)错误。C)选项中不能将x+y的值赋给表达式y*5,所以C)错误。
设有定义:int x=2;,以下表达式中,值不为6的是( )。
A) 2*x,x+=2
B) x++,2*x
C) x*=(1+x)
D) x*=x+1
参考答案:A
有以下程序:
#include <stdio.h>
main()
{ int x, y, z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是( )。
A) 2,3,3
B) 2,3,2
C) 2,3,1
D) 2,2,1
参考答案:C
【解析】z=x++,y++,++y;因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(z=x++),(y++),(++y)。然后从左向右先计算表达式z=x++,
因为x++先使用后自增,所以z的值为1,x的值为2。再计算逗号表达式第二个表达式y++,此时y的值为2,最后计算第三个表达式++y,y的值为3。
有以下程序:
#include <stdio.h>
main()
{ char c1,c2;
c1='A'+'8'-'4';
c2='A'+'8'-'5';
printf( "%c,%d\n",c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是( )。
A) E,68
B) D,69
C) E,D
D) 输出无定值
参考答案:A
【解析】本题目中字符变量c1是字符'A'的ASCII码加上4,即69所对应的字符'E'。 字符变量c2是字符'printf怎么加两个条件A'的ASCII码加上3,即68所对应的字符'D'。但是打印输出时,c1以%c的格式输出,所以是E,c2以%d的格式输出,所以是68。
若有定义int x,y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是( )。
A) (x-y<0||x-y>0)
B) (x-y<0)
C) (x-y>0)
D) (x-y==0)
参考答案:A
【解析】条件表达式:x=表达式1?表达式2:表达式3 的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式1:(x-y)等价的是(x-y<0||x-y>0)。
有以下程序:
#include <stdio.h>
main()
{ int x=1, y=0;
if (!x) y++;
else if (x==0)
if (x) y+=2;
else y+=3;
printf("%d\n", y);
}
程序运行后的输出结果是( )。
A) 3
B) 2
C) 1
D) 0
参考答案:D
【解析】 在if else语句中 else总是与离它最近的if配对。本题目中x为1所以!x为0,所以执行else if语句中的内容,判断(x==0)是否成立,因为x为1所以条件不成立,所以else if 内部的if…else语句不再执行,所以y的值还是初始值0。
若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是( )。
A) switch(a+b)
{ case 1: printf("*\n");
case 2+1: printf("**\n"); }
B) switch((int)x);
{ case 1: printf("*\n");
case 2: printf("**\n"); }
C) switch(x)
{ case 1.0: printf("*\n");
case 2.0: printf("**\n"); }
D) switch(a+b)
{ case 1: printf("*\n");
case c: printf("**\n"); }
参考答案:A
【解析】B)选项中switch((int)x);语句中不应该有最后的分号。switch(expr1), 中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C)错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D)错误。
有以下程序:
#include <stdio.h>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论