1、山东专升本计算机科学与技术(综合二)模拟试卷 1 及答案与解析单项选择题1 一个栈的输入序列为 1,2,3,n,若输出序列的第一个元素是 n,输出第i(1next=NULL :while(_)q=p;p=_;q 一next=L 一next;L 一next=q;17 “算法”(Algorithm)就是对求解问题步骤的一种描述,也称为算法设计。它具有五个特征:有穷性,_,_,输入和输出。18 评价算法好坏的五个方面_,_,正确性,可读性,健壮性。操作计算题19 设一组记录的关键字按以下次序进行插入:4、5、7、2、1、3、6。要求构造平衡二叉树。20 非递归遍历求二叉树上的叶子结点个数。21 在单
2、链表上实现线性表的求表长 ListLength(L)运算。单项选择题22 一个 C 语言程序是由( )。(A)一个主程序和若干子程序组成 (B)函数组成(C)若干过程组成(D)若干子程序组成23 设有说明语句:char w;int x;float y;double z;则表达式 w*x+zy 值的数据类型为( ) 。(A)float(B) char(C) int(D)double24 以下能正确地定义整形变量 a,b 和 c 并为其赋值为 5 的语句是( )。(A)int ab=c 一 5(B) int a,b,c=5(C) int a=5b=5,c=5(D)a=b=c=525 为了避免在嵌套
3、的条件语句 if 一 else 中产生二义性,C 语言规定 else 子句总是与 ( )配对。(A)缩排位置相同的 if(B)其之前最近的 if(C)其之后最近的 if(D)同一行上的 if26 下面有关 for 循环的正确描述是( ) 。(A)for 循环只能用于循环次数已经确定的情况(B) for 循环是先执行循环体语句,后判断表达式(C) for 循环中,不能用 break 语句跳出循环体(D)for 循环的循环体语句中,可包含多条语句,但必须用花括号括起来27 在 C 语言中,引用数组元素时,其数组下标的数据类型不允许是( )。(A)整型常量(B)整型表达式(C)整型常量或整型表达式(
4、D)任何类型的表达式28 C 语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是( )。(A)地址传递(B)单向值传递(C)双向传递(D)由用户指定传递方式29 以下关于编译处理的叙述中错误的是( )。(A)预处理命令必须以#开始(B)一条有效的预处理命令必须单独占据一行(C)预处理命令只能位于源程序中所有语句中(D)预处理命令不是 C 语言本身的组成部分30 若有定义:int a5;则 a 数组中首元素的地址可以表示为( ) 。(A)ki=k 2i+1 或者 k i=k 2i;ki=k 2i+1 其中 i=1,2,n2。若将同以上序列对应的一维数组看成是一棵完全二叉树,则堆的含义
5、表明:该完全二叉树的所有非终端结点均不大于(或不小于 )其左、右孩子结点的值。由此,若k 1,k 2,k 3,k n)是堆,则堆顶元素(或完全二叉树的根结点)必定是该序列 n 个元素中的最小值 (或者最大值)。若将堆看成是一棵以 k1 为根的完全二叉树,则这棵完全二叉树中的每个非终端结点的值均不大于(或不小于) 其左、右孩子结点的值。由此可以看出,若一棵完全二叉树是堆,则根结点一定是这 n 个结点中的最小者( 或最大者) 。下面图给出的两个堆的示例。 从堆的定义可以看出,若将堆用一棵完全二叉树表示,则根结点是当前堆中所有结点的最小者(或最大者) 。堆排序的基本思想是:首先将待排序的记录序列构造
6、一个堆,此时,选出了堆中所有记录的最小者或最大者,然后将它从堆中移走,并将剩余的记录再调整成堆,这样又找出了次小(或次大)的记录,以此类推,直到堆中只有一个记录为止,每个记录出堆的顺序就是一个有序序列。判断题11 【正确答案】 B12 【正确答案】 A13 【正确答案】 B【试题解析】 这里未强调数据元素的性质相同。14 【正确答案】 B【试题解析】 完全有向图的邻接矩阵是对称矩阵。15 【正确答案】 A填空题16 【正确答案】 p=L 一 next p! =null p=p 一next【试题解析】 逆置时需将每一个结点的指针域作以修改,使其原前趋结点成为后继。17 【正确答案】 确定性可行性
7、18 【正确答案】 时间效率空间效率操作计算题19 【正确答案】 构造过程为:20 【正确答案】 int Count(BiTree bt)非递归遍历求二叉树上的叶子结点个数int num=0;BiTree s;s 是栈,栈中元素是二叉树结点指针,栈容量足够大whlie(bt!=nulltop0)while(bt!=null)push(s, bt)bt=bt 一lchild ;)沿左分支向下if(!StackEmpty(s)bt=pop(s); if(bt 一lchild=null&bt 一rchild=null)num+;叶子结点bt=bt 一rc21 【正确答案】 int ListLengt
8、h(LinkList*L)求带头结点的单链表的表长int len=0:ListList*p;p=L;while(p 一next!=NULL)p=p 一next;len+:return(1en):单项选择题22 【正确答案】 B【试题解析】 C 程序由若干程序文件组成,一个程序文件由若干函数构成。23 【正确答案】 D【试题解析】 自动转换发生在不同类型的数据混合运算时,由编译系统自动完成。自动转换遵循以下规则:若参与运算量的类型不同,则先转换成同一类型,然后进行运算。转换按数据长度增加的方向进行,以保证精度不降低。如 int 型和 long型运算时,先把 int 量转成 long 型后再进行运
9、算。所有的浮点运算都是以双精度进行的,即使仅含 float 单精度量运算的表达式,也要先转换成 double 型,再作运算。char 型和 short 型参与运算时,必须先转换成 int 型。在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五人向前舍入。24 【正确答案】 C【试题解析】 在变量说明中,不允许连续给多个变量赋初值。如下说明是错误的:int a=b=c=5:必须写为:int a=5,b=5 ,c=5;25 【正确答案】 A【试题解析】 多重 if_else 嵌
10、套时,else 总是与它上面最近的并且未配对过的 if 配对,即缩排位置相同的 if。26 【正确答案】 D【试题解析】 for 循环即可以用于循环次数固定的情况,也可用于循环次数不固定的情况;执行顺序是先判断条件后执行,可以使用 break 语句退出循环。27 【正确答案】 D【试题解析】 数组下标可以是符号常数或常量表达式。28 【正确答案】 B【试题解析】 数据只能由实参向形参进行传递,即单项传递。29 【正确答案】 B【试题解析】 预处理命令不是 C 语句。而预处理命令是由 ANsI c 统一规定的,它不是 c 语句本身的组成部分。所以,不能直接对它们进行编译(因为编译程序不能识别它们
11、),必须在对程序进行通常的编译之前,先对程序中的这些特殊的命令进行预处理。30 【正确答案】 C【试题解析】 数组 a 的首地址表示方法:&a0或 a。31 【正确答案】 A【试题解析】 结构体分配的内存空间是所有成员所需空间的总和,而联合体是占内存空间最大的成员的所需容量。填空题32 【正确答案】 分号33 【正确答案】 3.5【试题解析】 本题考查运算符的优先级概念,式中要先算(a+b)的值,再算强制类型变换*、是同级的,要从左到右计算,最后算加法和赋值。34 【正确答案】 文件指针变量,stdioh【试题解析】 代码“FILE*P”的作用是定义一个文件指针变量,其中的 FILE 是在标准
12、辎入输出头文件 stdioh 中定义的。35 【正确答案】 ABCD。A【试题解析】 若给字符指针变量 a 赋一个字符串常量“ABCD”,实际上是给 a 赋指向字符串常量首字符A 咱勺指针。程序通过它访问字符串中的各字符。如用代码 printf(“S”a)输出这个字符串常量”ABCD”的字符列 ABCD,用代码printf(“C”,*a) 输出 a 所指的字符 A。程序填空题36 【正确答案】 x00;x100;x200【试题解析】 本题可根据已知的分段函数式中 x 与 y 之间的关系和条件判断语句if 的先后顺序,将 x 的值按从小到大进行判断填空。37 【正确答案】 fabs(item)=000001;n+=2编程题38 【正确答案】 #include”stdio h”main( )int a35,i,j,t,n=3,m=5,min,max,minrow ,mineol,maxrow ,maxcol ;printf(“Enterd*d numbers!n”,n,m);for(i=0;ivoid main( )int i,a83, max,rain,sum=0;float aver;for(i=1;iai)min=ai;aver=(summaxmin)