国家二级(C语言)机试模拟试卷112
选择题
1.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为( )。(B)
A. 5
B. 4
C. 3
D. 2
解析:二叉树的后序序列为DCBG.FEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。
2.设有定义:struct{int n;float x;}s[2],m[2]:{{10,2.8},{0,0.0}};则以下赋值语句中正确的是( )。(A)
A. s[0]=m[1];
B. s=m;
C. s.n=m.n;
D. s[2].x=m[2].x;
解析:定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。
3.关于C语言标识符,以下叙述错误的是( )。(A)
A. 标识符可全部由数字组成
B. 标识符可全部由下划线组成
C. 标识符可全部由小写字母组成
D. 标识符可全部由大写字母组成
解析:C语言标识符只能由字母、数字、下划线组成,且标识符的第一个字符只能是字母或下划线。
4.以下程序段中的变量已定义为int类型,则
sum=pad=5;pad=sum++,pad++,++pad;
printf(\\(D)
A. 6
B. 4
C. 5
D. 7
解析:赋值运算符的优先级高于逗号运算符,因此语句“pad=sum++,pad++,++pad”的执行顺序为pad=sum++,pad=5;pad++,pad=6;++pad,pad=7,输出7。
5.设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为( )。(D)
A. 5
B. 6
C. m-5
D. m-6
解析:循环队列的长度为:(rear-front+m)%m=m-5。查找长度为m-5的队列的最小值,最坏情况下需要从头至尾比较m-6次。
6.以下选项中,合法的C语言常量是( )。(A)
A. 1.234
B. ’C++’
C. \\
D. 2Kb
解析:C语言中的常量:①整型常量,用不带小数点的数字表示;②实型常量,用带小数点的数字表示;③字符型常量,用带有单引号的一个字符表示;④字符串常量,用一对双引号括起来的一串字符。1.234为实型常量,A项正确;’C++’不合法,若改成\\
7.以下选项中,不能对主函数中变量i和j的值进行交换的程序是( )。
A
解析:A项,定义了一个临时指针t,实现两个指针地址的交换,传入的参数是两个指针的副本,故交换了副本地址,对a、b无影响;B项,调用函数传入的是i与j地址,函数体内交换的是地址内元素,临时变量t为整型变量,能实现i与j值交换;C项,调用函数传入的是i与j地址,函数体内交换的是地址内元素,临时 变量t为整型指针,且已正确开辟内存,能实现i与j值交换;D项与B项相同,能实现i与j值交换。
8.C语言中,最基本的数据类型包括( )。(C)
A. 整型、实型、逻辑型
B. 整型、字符型、数组
C. 整型、实型、字符型
D. 整型、实型、结构体
解析:C语言中,最基本的数据类型包括整型、实型、字符型。
9.下列叙述中错误的是( )。(C)
A. 算法的时间复杂度与算法所处理数据的存储结构有直接关系
B. 算法的空间复杂度与算法所处理数据的存储结构有直接关系
C. 算法的时间复杂度与空间复杂度有直接关系
D. 算法的时间复杂度与算法程序执行的具体时间是不一致的
解析:算法的时间复杂度是指执行算法所需要的计算工作量。数据的存储结构直接决定数据输入,因此会影响算法所执行的基本运算次数,A项正确;算法的空间复杂度是指执行这个算法所需要的内存空间,其中包括输入数据所占的存储空间,B项正确;算法的时间复杂度与空间复杂度没有直接关系,C项错误;算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节影响,而算法的时间复杂度与这些因素无关,所以算法的时间复杂度与算法程序执行的具体时间是不一致的,D项正确。
10.以下能正确输出字符a的语句是( )。(A)
A. printf(\\
B. printf(\\
C. printf(\\
D. printf(\\
解析:“格式控制串”用来指定每个输出项的输出格式,%s对应字符串,%c对应字符。双引号里面的内容为字符串\\
11.字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用的是( )。(A)
A. if(strcmp(a,b)==0)
B. if(strcpy(a,b))
C. if(a==b)
D. if(a=b)
解析:C语言中,判断字符串是否相等,使用字符串比较函数strcmp(),不能使用相等操作符“==”。strcmp(s1,s2)函数比较s1和s2所指字符串的大小时,若串s1>串s2,函数值大于0(正数);若串s1=串s2,函数值等于0;若串s1<串s2,函数值小于0(负数)。
12.设有定义:int x=11,y=12,z=0;,以下表达式值不等于12的是( )。(D)
A. (z,x,y)
B. (z=x,y)
C. z=(x,y)
D. z=(x==y)
解析:逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个子表达式的值作为该逗号表达式的值。赋值运算结合性为由右向左结合,赋值运算符左边为变量,右边为变量或常量,且左右两边数据类型相同才能实现赋值。逻辑表达式成立则返回1,不成立返回0。A项逗号表达式(z,x,y)取y值为12;B项逗号表达式x,y取y值为表达式值,然后赋值给z=12,表达式值为12;C项逗号表达式(x,y)取y值为表达式值,然后赋值给z=12,表达式值为12;D项逻辑表达式x==y不成立,则z=0,表达式值为0。
13.下列叙述中正确的是( )。(D)
A. 存储空间连续的数据结构一定是线性结构
B. 存储空间不连续的数据结构一定是非线性结构
C. 没有根结点的非空数据结构一定是线性结构
D. 具有两个根结点的数据结构一定是非线性结构
解析:A项错误,数据结构线性与否与存储空间是否连续没有直接关系,如二叉树可以用一片连续的空间来存储,但二叉树为非线性结构;B项错误,线性表的链式存储结构可以用不连续的空间来存储,但线性表为线性结构;C项错误,没有根结点的非空数据结构一定不是线性结构;D项正确,线性结构有且只有一个根结点,具有两个根结点的结构一定是非线性结构。
14.以下选项中,合法的实数是( )。(A)
A. 4.
本文档预览:3600字符,共15503字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载