作者:江上_酒
QQ: 1470784960
Email: iszhaoxl@163.com
点击 参考答案,查看试题答案。
申明:
- 题型构成参考2020年初试真题。
- 题目仅供参考,考试需要的是实力,不能指望运气。
- 转载使用均需要标明出处,(制作不易,点赞关注万分感谢!)。
- 祝愿所有考生在专业课上可以取得理想成绩!!!
注意:①认真阅读答题纸上的注意事项;②所有答案必须写在答题纸上,写在本试题纸或草稿纸上均无效;③本试题纸须随答题纸一起装入试题袋中交回。
一、选择题(共20小题,每小题2分,共40分)
- 以下说法中正确的是( )。
A. C语言程序总是从第一个定义的函数开始执行
B. 在C语言程序中,要调用的函数必须在main( )函数中定义
C. C语言程序总是从main( )函数开始执行
D. C语言程序中的main( )函数必须放在程序的开始部分 - 下列四组字符串中都可以用作C语言程序中的标识符的是( )。
A. print _3d db8 aBc
B. I\am one_half start$it 3pai
C. str_1 Cpp pow while
D. Pxq My->book line# His.age - 在C语言程序中,表达式5%2的结果是( )。
A. 2.5
B. 2
C. 1
D. 3 - 下列不正确的定义是( )。
A. int *p=&i,i;
B. int *p,i;
C. int i,*p=&i;
D. int i,*p; - 若有以下定义,int k=7,x=12则能使值为3的表达式是( )。
A. X%=(K%=5)
B. X%=(K-K%5)
C. X%=K-K%5
D. (X%=K)-(K%=5) - 在表长为n的顺序表上做插入运算,平均要移动的结点数为( )。
A. n
B. n/2
C. n/3
D. n/4 - 在表长为n的顺序表上做删除运算,其平均时间复杂度为( )。
A. O ( 1 ) O(1) O(1)
B. O ( n ) O(n) O(n)
C. O ( n l o g n ) O(nlogn) O(nlogn)
D. O ( n 2 ) O(n^2) O(n2) - 设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1…n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为( )。
A. i(i-1)/2+j
B. j(j-1)/2+i
C. j(j-1)/2+i-1
D. i(i-1)/2+j-1 - 串的“模式匹配”是指( )。
A. 判两个串是否相等
B. 对两个串进行大小比较
C. 找某字符在串中第一次出现位置
D. 找某子串的主串中第一次出现的位置 - 含有n个结点的二叉树用二叉链表表示时,空链域个数为( )。
A. n-1
B. n
C. n+1
D. n+2 - 循环队列存储在数组A[0…m]中,则入队时的操作为( )。
A. rear=rear+1
B. rear=(rear+1) mod (m-1)
C. rear=(rear+1) mod m
D. rear=(rear+1) mod(m+1) - 设顺序表有19个元素,第一个元素的地址为200,且每个元素占一个字节,则第14个元素的存储地址为( )。
A. 212
B. 213
C. 214
D. 215 - 设散列表表长m=14,散列函数为h(k)=k%11,表中已有4个记录,如果用二次探测再散列处理冲突,关键字为49的记录的存储地址是( )。
A. 8
B. 3
C. 5
D. 9
- 对有14个元素的有序表A[1‥14]作二分查找,查找元素A[4]时的被比较元素依次为( )。
A. A[1],A[2],A[3],A[4]
B. A[1],A[14],A[7],A[4]
C. A[7],A[3],A[5],A[4]
D. A[7],A[5],A[3],A[4] - 将表达式子
(
a
+
b
)
∗
d
+
e
/
(
f
+
a
∗
d
)
+
c
(a+b)*d+e/(f+a*d)+c
(a+b)∗d+e/(f+a∗d)+c转换为后序表达式子( )。
A. a b d e f a d c + ∗ + / + ∗ + abdefadc+*+/+*+ abdefadc+∗+/+∗+
B. + + ∗ + a b d / e + f ∗ a b c ++*+abd/e+f*abc ++∗+abd/e+f∗abc
C. a b + d ∗ e f a d ∗ + / + c + ab+d*efad*+/+c+ ab+d∗efad∗+/+c+
D. c e f a d ∗ + / + a b + d ∗ + cefad*+/+ab+d*+ cefad∗+/+ab+d∗+ - 已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子项t的运算是( )。
A. head(tail(tail(L)))
B. tail(head(head(tail(L))))
C. head(tail(head(tail(L))))
D. head(tail(head(tail(tail(L))))) - 下列方法中,不稳定的排序是( )。
A. 直接插入排序
B. 冒泡排序
C. 堆排序
D. 归并排序 - 下列四个关键字序列中,( )不是堆。
A. {05,23,16,68,94,72,71,73}
B. {05,16,23,68,94,72,71,73}
C. {05,23,16,73,94,72,71,68}
D. {05,23,16,68,73,71,72,94} - 带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中( )。
A. 第i行非无穷元素之和
B. 第i列非无穷元素之和
C. 第i行非零且非无穷元素个数
D. 第i列非零且非无穷元素个数 - n个顶点的无向图若采用邻接矩阵存储,则该矩阵的大小是( )。
A. n n n
B. ( n − 1 ) 2 (n-1)^2 (n−1)2
C. n + 1 n+1 n+1
D. n 2 n^2 n2
二、应用题(共3小题,每小题10分,共30分)
- 下列为在单链表中删除一个结点的算法。head是带头结点的单链表,删除p指向的结点。
void demo(LinkList head, ListNode *p) { ListNode *q=head; While(q&&__(1)__) q=q->next; if(!q->next) return; __(2)__; __(3)__; }
- 已知长度为12的表(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec),按表中顺序依次插入初始为空的二叉排序树中。画出插入后的二叉排序树,并求出在等概率情况下的查找成功的平均查找长度。
- 已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,画出这棵二叉树。
三、编写程序(共4小题,每小题10分,共40分)
- 从键盘输入10个整数,统计其中正数、负数和零的个数,并输出到控制台。
- 从键盘输入两个整数,求出其最大值。要求使用函数完成求最大值,并在主函数中调用该函数。
- 编写程序实现求1-1000之间的所有奇数的和并输出。
- 从键盘上输入一个 2 ∗ 3 2*3 2∗3 的矩阵,将其转秩后形成 3 ∗ 2 3*2 3∗2 的矩阵输出。
四、算法设计(共4小题,每小题10分,共40分)
- 有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列
- 若已知两棵二叉树B1和B2皆为空,或者皆不空且B1的左、右子树和B2的左、右子树分别相似,则称二叉树B1和B2相似。试编写算法,判定两棵二叉树是否相似。
- 二叉树采用二叉链表存储:编写计算整个二叉树高度的算法(二叉树的高度也叫二叉树的深度)。
- 在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。