试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.下列算法描述所用的方法是() Begin(算法开始) 输入 A,B,C IF A>B 则 A→Max 否则 B→Max IF C>Max 则 C→Max Print Max End (算法结束)
A.流程图
B.N-S流程图
C.伪代码表示
D.程序设计语言
2.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()。
A.n+1
B.n-1
C.2n
D.n/2
3.下列叙述中正确的是()
A.线性链表是线性表的链式存储结构
B.栈与队列是非线性结构
C.双向链表是非线性结构
D.只有根结点的二叉树是线性结构
4.设有如下函数定义 int fun(int k) { if (k<1) return 0; else if(k==1) return 1; else return fun(k-1)+1; } 若执行调用语句:n=fun(3);,则函数fun 总共被调用的次数是()。
A.2
B.3
C.4
D.5
5.strchr()函数用来()。
A.字符串连接
B.比较字符
C.求字符位置
D.求子串位置
6.下面4句话中,最准确的表述是()。
A.程序=算法+数据结构
B.程序是使用编程语言实现算法
C.程序的开发方法决定算法设计
D.算法是程序设计中最关键的因素
7.一个递归算法必须包括()。
A.递归部分
B.终止条件和递归部分
C.循环部分
D.终止条件和循环部分
8.插入排序在最好情况下的时间复杂度为()
A.O(logn)
B.O(n)
C.O(n*logn)
D.O(n2)
9.已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是(C)。
A.39
B.52
C.111
D.119
10.strstr()函数用来()。
A.字符串连接
B.比较字符
C.求字符位置
D.求子串位置
11.在程序代码编辑框外(一般都是程序代码的最左侧)双击,就成功设置了一个断点,设置成功后会在该行的最前面显示一个圆点,这样的过程称作()。
A.设置断点
B.单步调试
C.程序编译
D.程序调试
12.有以下程序 #include <stdio.h> int f(int t[ ], int n ); main() { int a[4]={1, 2, 3, 4}, s; s=f(a, 4); printf("%d\n", s); } int f(int t[ ], int n ) { if(n>0) return t[n-1]+f(t, n-1); else return 0; } 程序运行后的输出结果是()。
A.4
B.10
C.14
D.6
13.八进制中最大的数码是()。
A.6
B.7
C.8
D.9
14.将f=1+1/2+1/3+…+1/n转化成递归函数,其递归体是()。
A.f(1)=0
B.f(1)=1
C.f(0)=1
D.f(n)=f(n-1)+1/n
15.分治法是把一个复杂的问题分成相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题解的()
A.合并
B.最大值
C.最小值
D.平均值
16.自动化的工具同样也能够帮助你跟踪程序,尤其当程序很复杂时效果更加明显,这种工具叫做()。
A.调试器
B.编辑器
C.编译器
D.调解器
17.strcpy()函数用来()。
A.求字符串长度
B.比较字符
C.求子串
D.字符串拷贝
18.cd 目录名的功能是()。
A.退回到根目录
B.退回到上一级目录
C.进入特定的目录
D.显示出文本文件的内容
19.对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。
A.log2n
B.n/2
C.n
D.n+1
20.()嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。而不要解释下面怎么做,因为程序本身就是怎么做。
A.文件注释
B.函数注释
C.功能注释
D.程序注释
二、多选题 (共 4 道试题,共 16 分)
21.顺序结构、选择结构、循环结构三种结构共同特点是()
A.只有一个入口
B.只有一个出口
C.结构内的每一部分都有机会被执行到(不存在死语句)
D.结构内不存在死循环(永远执行不完的循环)。
22.字符串有关的格式字符有( )。
A."%c"
B."%d"
C."%f"
D."%s"
23.递归算法的执行过程分()和()两个阶段。
A.递归
B.递推
C.回归
D.回溯
24.设计递归算法有两点最为关键()和()。
A.确定递推公式
B.确定边界(终了)条件(递归出口)
C.每次递归调用,都必须向基本条件前进
D.如果结果已知,那么,不用再重复调用递归
三、判断题 (共 22 道试题,共 44 分)
25.简单选择排序算法在最好情况下的时间复杂度为O(N)。
26.顺序查找是从线性表的一端开始,依次将每个元素的关键字同给定值K进行比较,若某元素关键字与K相等,则查找成功;若所有元素都比较完毕,仍找不到关键字为K的元素,则查找失败。
27.冒泡排序的时间复杂度为O(n*n)。
28.内排序要求数据一定要以顺序方式存储。
29.排序速度,进行外排序时,必须选用最快的内排序算法。
30.gets()函数一次可以输入多个字符串。
31.采用顺序查找方式查找长度为n的线性表时,平均查找长度为(n-1)/2。
32.穷举法,也称辗转法,是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。
33.程序调试的作用是将程序测试过程中发现的错误改正过来,程序调试后需要再次进行测试。
34.具有10个顶点的无向图,边的总数最多为44。
35.递推实现的关键是找出递推公式。
36.冒泡排序法每次比较的是相邻的两个数:a[i]和a[i+1],如果前一个数比后一个数大,则马上交换。
37.字符型和整型一般情况下可以通用。
38.在深度为7的满二叉树中,度为2的结点个数为64。
39.用二分(对半)查找表的元素的速度比用顺序法快。
40.某二叉树中度为2的结点有18个,则该二叉树中有20个叶子结点。
41.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的顺序存储结构。
42.C语言中,数组名代表该数组的起始地址。
43.线性表需要为表示结点间的逻辑关系而增加额外的存储空间。
44.在待排数据基本有序的情况下,快速排序效果最好。
45.在后序遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点之后。
46.scanf()、printf()可以输入输出几个字符串