算法分析与设计2023年秋学期在线作业1
共46道题 总分:100分
一、单选题(共20题,40分)
1.下列算法描述所用的方法是()Begin(算法开始)输入 A,B,CIF A>B 则 A→Max否则 B→MaxIF C>Max 则 C→MaxPrint MaxEnd (算法结束)
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、显示出文本文件的内容
东师答案请进:opzy.net或请联系微信:1095258436
19.对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。
A、log2n
B、n/2
C、n
D、n+1
20.()嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。而不要解释下面怎么做,因为程序本身就是怎么做。
A、文件注释
B、函数注释
C、功能注释
D、程序注释
二、多选题(共4题,16分)
1.顺序结构、选择结构、循环结构三种结构共同特点是()
A、只有一个入口
B、只有一个出口
C、结构内的每一部分都有机会被执行到(不存在死语句)
D、结构内不存在死循环(永远执行不完的循环)。
2.字符串有关的格式字符有( )。
A、”%c”
B、”%d”
C、”%f”
D、”%s”
3.递归算法的执行过程分()和()两个阶段。
A、递归
B、递推
C、回归
D、回溯
4.设计递归算法有两点最为关键()和()。
A、确定递推公式
B、确定边界(终了)条件(递归出口)
C、每次递归调用,都必须向基本条件前进
D、如果结果已知,那么,不用再重复调用递归
三、判断题(共22题,44分)
1.简单选择排序算法在最好情况下的时间复杂度为O(N)。
A、错误
B、正确
2.顺序查找是从线性表的一端开始,依次将每个元素的关键字同给定值K进行比较,若某元素关键字与K相等,则查找成功;若所有元素都比较完毕,仍找不到关键字为K的元素,则查找失败。
A、错误
B、正确
3.冒泡排序的时间复杂度为O(n*n)。
A、错误
B、正确
4.内排序要求数据一定要以顺序方式存储。
A、错误
B、正确
5.排序速度,进行外排序时,必须选用最快的内排序算法。
A、错误
B、正确
6.gets()函数一次可以输入多个字符串。
A、错误
B、正确
7.采用顺序查找方式查找长度为n的线性表时,平均查找长度为(n-1)/2。
A、错误
B、正确
8.穷举法,也称辗转法,是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。
A、错误
B、正确
9.程序调试的作用是将程序测试过程中发现的错误改正过来,程序调试后需要再次进行测试。
A、错误
B、正确
10.具有10个顶点的无向图,边的总数最多为44。
A、错误
B、正确
11.递推实现的关键是找出递推公式。
A、错误
B、正确
12.冒泡排序法每次比较的是相邻的两个数:a[i]和a[i+1],如果前一个数比后一个数大,则马上交换。
A、错误
B、正确
13.字符型和整型一般情况下可以通用。
A、错误
B、正确
14.在深度为7的满二叉树中,度为2的结点个数为64。
A、错误
B、正确
15.用二分(对半)查找表的元素的速度比用顺序法快。
A、错误
B、正确
16.某二叉树中度为2的结点有18个,则该二叉树中有20个叶子结点。
A、错误
B、正确
17.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的顺序存储结构。
A、错误
B、正确
18.C语言中,数组名代表该数组的起始地址。
A、错误
B、正确
19.线性表需要为表示结点间的逻辑关系而增加额外的存储空间。
A、错误
B、正确
20.在待排数据基本有序的情况下,快速排序效果最好。
A、错误
B、正确
21.在后序遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点之后。
A、错误
B、正确
22.scanf()、printf()可以输入输出几个字符串。
A、错误
B、正确
算法分析与设计2022年秋学期在线作业1
共46道题 总分:100分
一、单选题(共20题,40分)
1.下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是()。
A、选择排序法
B、插入排序法
C、快速排序法
D、堆积排序法
2.已知某二叉树的后序遍历序列是dabec,中序遍历序列是deabc,它的前序遍历序列是( )
A、acbed
B、deabc
C、decab
D、cedba
3.以下选项中合法的字符常量是()。
A、”B”
B、68
C、D
D、’\010′
4.在有序表A[1..12]中,采用二分查找算法查等于A[12]的元素,所比较的元素下标依次为()。
A、5, 8, 10, 12
B、6, 9, 11, 12
C、4, 7, 9, 12
D、1, 4, 8, 12
5.下列数据结果中,能够按照“先进后出”原则存取数据的是( )
A、循环队列
B、栈
C、队列
D、二叉树
6.strcat()函数是用来()。
A、字符串连接
B、比较字符
C、求子串
D、字符串拷贝
7.注释从功能上可以分为()。
A、文件注释
B、函数注释
C、功能注释
D、以上全是
8.数制也称计数制,是用一组固定的符号和统一的规则来表示()的方法。
A、数值
B、字母
C、文字
D、信息
9.在数组A中a[0]到a[5]中分别存放一列数{5,4,0,3,1,2},使用简单选择排序法对其按照升序进行排序,第0趟比较后,进行交换的是()。
A、a[3]与a[2]
B、a[0]与a[2]
C、a[0]与a[1]
D、a[0]与a[3]
10.有以下程序#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
11.IDE (Integrated Development Environment) 集成开发环境,是专门用于程序开发环境的应用程序,一般包括()和图形用户界面工具。
A、代码编辑器、编译器
B、代码编辑器、编译器、调试器
C、编译器、调试器
D、代码编辑器、编译器、调试器、集成开发环境
12.二进制中最小的数码是()。
A、0
B、1
C、2
D、3
13.下列排序算法中,其中()是稳定的。
A、堆排序,冒泡排序
B、快速排序,堆排序
C、直接选择排序,归并排序
D、归并排序,冒泡排序
14.字符数组在进行指定初值时,若未指定数组长度,则长度()初值个数。
A、小于
B、等于
C、大于
D、不等于
15.strrev(“abcd”)返回值为()。
A、”abcd”
B、”dcba”
C、”cdab”
D、”ab”
16.在下面的排序方法中,辅助空间为O(n)的是() 。
A、希尔排序
B、堆排序
C、选择排序
D、归并排序
17.IDE的全程是()。
A、集成开发环境
B、集成环境
C、开发软件
D、调试过程
18.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是:()。
A、直接插入排序
B、快速排序
C、直接选择排序
D、堆排序
19.执行memset(s,’a’,4)后,s的值为()。
A、”aaaa”
B、”a4″
C、”4a”
D、”eeee”
20.在启发式搜索中,最重要的是() 。
A、对搜索位置进行评估
B、对搜索时间进行限定
C、对搜索速度进行控制
D、对搜索目标的设定
二、多选题(共4题,16分)
1.递归算法的执行过程分()和()两个阶段。
A、递归
B、递推
C、回归
D、回溯
2.设计递归算法有两点最为关键()和()。
A、确定递推公式
B、确定边界(终了)条件(递归出口)
C、每次递归调用,都必须向基本条件前进
D、如果结果已知,那么,不用再重复调用递归
3.顺序结构、选择结构、循环结构三种结构共同特点是()
A、只有一个入口
B、只有一个出口
C、结构内的每一部分都有机会被执行到(不存在死语句)
D、结构内不存在死循环(永远执行不完的循环)。
4.字符串有关的格式字符有( )。
A、”%c”
B、”%d”
C、”%f”
D、”%s”
三、判断题(共22题,44分)
1.在计算机上中有符号整数和无符号整数表示的数值范围是相同的。
A、错误
B、正确
2.递推实现的关键是找出递推公式。
A、错误
B、正确
3.无论表中的结点是否按关键字进行有序排列,在进行查找操作时都可以使用折半查找。
A、错误
B、正确
4.递推算法是一种用若干步可重复的简单运算(规律)来描述复杂问题的方法。
A、错误
B、正确
5.有一组数据{6,202,100,301,38,8,1},使用简单选择排序需要进行6趟比较。
A、错误
B、正确
6.快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。
A、错误
B、正确
7.线性表可以方便地随机读取、插入、删除表中的任一结点。
A、错误
B、正确
8.若一棵二叉树的叶子数为n,则该二叉树中,左、右子树皆非空的结点个数为n-1。
A、错误
B、正确
9.影响外排序的时间因素主要是内存与外设交换信息的总次数。
A、错误
B、正确
10.递归是计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得出序列中指定项的值。
A、错误
B、正确
11.一个算法的评价只要考虑时间复杂度。
A、错误
B、正确
12.编辑与编译是一回事。
A、错误
B、正确
13.简单选择排序是一种稳定排序方法。
A、错误
B、正确
14.任意一棵具有n个结点的二叉树,若它有m个叶子,则该二叉树上度数为1的结点为n-2m+1个。
A、错误
B、正确
15.一个算法有零个或多个输入。
A、错误
B、正确
16.已知有序表(13,18,24,35,47,50,62,83,90,115,134),当折半查找值为90的元素时,查找成功的比较次数为4次
A、错误
B、正确
17.一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1 依次入队,然后再依次退队,则元素退队的顺序为54321ABCDEF。
A、错误
B、正确
18.已知一棵度为3的树有2个度为1的结点,3个度过为2的结点,4个度为3的结点,则该树中有12个叶子结点。
A、错误
B、正确
19.插入排序是一种稳定排序方法。
A、错误
B、正确
20.字符串的函数都在string.h头文件中。
A、错误
B、正确
21.深度为k(k>=1)的二叉树至多有2^k-1个结点。
A、错误
B、正确
22.一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有25个结点。
A、错误
B、正确
算法分析与设计2022年秋学期在线作业1
共46道题 总分:100分
一、单选题(共20题,40分)
1.下列算法描述所用的方法是()Begin(算法开始)输入 A,B,CIF A>B 则 A→Max否则 B→MaxIF C>Max 则 C→MaxPrint MaxEnd (算法结束)
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分)
1.顺序结构、选择结构、循环结构三种结构共同特点是()
A、只有一个入口
B、只有一个出口
C、结构内的每一部分都有机会被执行到(不存在死语句)
D、结构内不存在死循环(永远执行不完的循环)。
2.字符串有关的格式字符有( )。
A、”%c”
B、”%d”
C、”%f”
D、”%s”
3.递归算法的执行过程分()和()两个阶段。
A、递归
B、递推
C、回归
D、回溯
4.设计递归算法有两点最为关键()和()。
A、确定递推公式
B、确定边界(终了)条件(递归出口)
C、每次递归调用,都必须向基本条件前进
D、如果结果已知,那么,不用再重复调用递归
三、判断题(共22题,44分)
1.简单选择排序算法在最好情况下的时间复杂度为O(N)。
A、错误
B、正确
2.顺序查找是从线性表的一端开始,依次将每个元素的关键字同给定值K进行比较,若某元素关键字与K相等,则查找成功;若所有元素都比较完毕,仍找不到关键字为K的元素,则查找失败。
A、错误
B、正确
3.冒泡排序的时间复杂度为O(n*n)。
A、错误
B、正确
4.内排序要求数据一定要以顺序方式存储。
A、错误
B、正确
5.排序速度,进行外排序时,必须选用最快的内排序算法。
A、错误
B、正确
6.gets()函数一次可以输入多个字符串。
A、错误
B、正确
7.采用顺序查找方式查找长度为n的线性表时,平均查找长度为(n-1)/2。
A、错误
B、正确
8.穷举法,也称辗转法,是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。
A、错误
B、正确
9.程序调试的作用是将程序测试过程中发现的错误改正过来,程序调试后需要再次进行测试。
A、错误
B、正确
10.具有10个顶点的无向图,边的总数最多为44。
A、错误
B、正确
11.递推实现的关键是找出递推公式。
A、错误
B、正确
12.冒泡排序法每次比较的是相邻的两个数:a[i]和a[i+1],如果前一个数比后一个数大,则马上交换。
A、错误
B、正确
13.字符型和整型一般情况下可以通用。
A、错误
B、正确
14.在深度为7的满二叉树中,度为2的结点个数为64。
A、错误
B、正确
15.用二分(对半)查找表的元素的速度比用顺序法快。
A、错误
B、正确
16.某二叉树中度为2的结点有18个,则该二叉树中有20个叶子结点。
A、错误
B、正确
17.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的顺序存储结构。
A、错误
B、正确
18.C语言中,数组名代表该数组的起始地址。
A、错误
B、正确
19.线性表需要为表示结点间的逻辑关系而增加额外的存储空间。
A、错误
B、正确
20.在待排数据基本有序的情况下,快速排序效果最好。
A、错误
B、正确
21.在后序遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点之后。
A、错误
B、正确
22.scanf()、printf()可以输入输出几个字符串。
A、错误
B、正确