国家二级(C语言)机试模拟试卷142
选择题
1.下列关于循环队列的叙述中正确的是( )。(B)
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
解析:循环队列有队头指针和队尾指针,其中的元素个数是由队头指针和队尾指针共同决定的,且循环指针是线性结构,因此,其他选项不正确。
2.设有一个初始状态为空的栈。现将元素A、B、C、1、2、3依次入栈,然后再依次出栈,则出栈后的元素顺序为以下哪一项?( )(D)
A. 123ABC
B. CBA321
C. ABC123
D. 321CBA
解析:用栈组织数据的原则是先进后出,所以最后进栈的元素最先出栈,最先进栈的元素最后出栈,所以答案选择D。与队列组织数据的先进出原则要区分开来。
3.在长度为m的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(C)
A. O(m)
B. O(m2)
C. O(1og2m)
D. O(mlog2m)
解析:进行二分法查找时,有序线性表中的元素必须顺序存储,因此进行二分法查找需要log2m次。
4.下列叙述中正确的是( )。(A)
A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C. 顺序存储结构能存储有序表,链式存储结构不能存储有序表
D. 链式存储结构比顺序存储结构节省存储空间
解析:链式存储可以是连续结构也可以是非连续结构,这是链式存储的特点。但链式存储中的存储节点不仅包括数据域还包括指针域,所以存储空间会更多,而不是节省存储空间。
5.数据流图中带有箭头的线段表示的是( )。(D)
A. 控制流
B. 事件驱动
C. 模块调用
D. 数据流
解析:数据流图中的箭头线段表示数据流,指从前一个结点流向后一个结点。
6.在软件开发的需求分析阶段,可以使用下列哪种工具?( )(B)
A. N—S图
B. DFD图
C. PAD图
D. 程序流程图
解析:在软件开发的需求阶段一般会使用的工具有数据流图(DFD图)和数据字典(DD),因此选择B。
7.计算机语言中常说的面向对象中,“对象”基本特点一般不包括( )。(C)
A. 多态性
B. 封装性
C. 一致性
D. 标识唯一性
解析:对象的基本特点包括:多态性、封装性、模块化和标识唯一性,因此选项C不正确。
8.一间学生宿舍可住至少一个学生,则宿舍和学生之间的对应关系是( )。(A)
A. 一对多
B. 一对一
C. 多对一
D. 多对多
解析:一间宿舍可以住多个学生,而一个学生只能住一间宿舍,因此,宿舍和学生是一对多的关系。
9.在数据管理技术发展的三个阶段中,数据共享最好的一个阶段是( )。(C)
A. 人工管理阶段
B. 文件系统阶段
C. 数据库系统阶段
D. 三个阶段相同
解析:数据管理技术的三个发展阶段为人工管理阶段、文件系统阶段和数据库管理阶段。只有在数据库管理阶段实现数据的自由分享更加容易和方便。
10.有三个关系R、S和T如下:
(D)
A. 笛卡尔积
B. 交
C. 并
D. 自然连接
解析:只有通过自然连接,即将数据自然连接在一起,并去掉重复的数据才能实现如题所示的结果,因此选择D。
11.在以下选项中,按照C语言规定,不能出现在标识符中的是( )。(D)
A. 大写字母
B. 下划线
C. 数字字符
D. 连接符
解析:按照C语言规定,标识符由字母、数字和下划线组成,且开头必须是字母或下划线,所以选项D不合法。
12.在以下选项中,能用作C语言数据常量的是( )。(A)
A. 10L
B. 083
C. 0.5e1.2
D. o30F
解析:选项A是长整型数,合法;选项B的形式是八进制数,但其中包含数字8,不合法;选项C是科学计数法的形式,但e后面的数不是整数,不合法;选项D有点像十六进制的数,但第一个字符是0,不是0也不是0x所以不合法。
13.下列叙述中错误的是( )。(A)
A. 一个C语言程序只能实现一种算法
B. C语言程序可以由多个程序文件组成
C. C语言程序可以由一个或多个函数组成
D. 一个C语言函数可以单独作为一个C语言程序文件存在
解析:在C语言程序中可以自选编制多种算法,因此选项A的叙述错误。C语言中可以由多个文件组成,并通过引用的方式连接在一起编译并运行,每个文件可以包含一个或多个函数,因此选项B和D的叙述没有错误;C语言可以包含多个函数,所以选项C的叙述也没有错误。
14.假如下列选项中的变量已正确定义并成功赋值,其中正确的表达式是( )。(B)
A. int(22.1%2)
B. n=y+m+5,++y
C. x=y*3=x+k
D. x=21%7.0
解析:求余运算符的左右两个数字都必须是整数,所以选项A和D错误,另外,进行整型强制转化时正确的表达式是(int)x,而不是int(x);选项C中不能将x+k的值赋给y*3,所以选项C错误。选项B中涉及逗号运算符,它的级别最低,因此,选项B表达式的执行过程是先将y+m+5的值赋给n,y值自加一次。
15.设在C语言程序中已经定义了整型变量int x=2;,以下表达式中,值不为6的是( )。(A)
A. 2*x,x+=2
B. x++,2*x
C. x*=(1+x)
D. x*=x+1
解析:选项A和B中出现的逗号表达式,整个表达式是取逗号后面的表达式的值,因此,选项A的计算过程是先计算2*x,得到4,此时x还是2,再计算x+=2,得到4,因此整个表达式的值是4。选项B的计算过程是先计算x++,得到2,此时x经过自加1后变成了3,再计算2*x,得到6,整个表达式的值取逗号后面的表达式的值为6。选项C分解后可以写成x=x*(1+x),将x=2代入,结果为6。选项D中的加法运算级别高于赋值运算,所以可以写成x=x*(x+1),将x=2代入,结果为6。
16.有以下C语言程序:
#inelude
void main()
{int x,y,z;
x=y=1;
z=x++,y++,++y;
printf(’’%d,%d,%d\n,x,y,z);
}
程序运行后的输出结果是( )。(D)
A. 2,3,3
B. 2,3,2<
本文档预览:3600字符,共16549字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载