递归练习题(新、选)

合集下载

《数据结构与算法》期末练习题1

《数据结构与算法》期末练习题1

一、选择:(每题2分,共30分) 简单选择排序 冒泡排序 归并排序 稳定1、下列排序算法中,其中( )是稳定的。

堆排序 希尔排序 快速排序 基数排序 不稳定A) 堆排序,冒泡排序 B) 快速排序,堆排序 C) 直接选择排序,希尔排序 D) 归并排序,冒泡排序 2、下列排序方法中,哪一个是稳定的排序方法?( )A)堆排序 B)二分法插入排序 C)希尔排序 D)快速排序3、一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。

A) 2 3 4 1 5 B) 5 4 1 3 2 C) 2 3 1 4 5 D) 1 5 4 3 2 4、非空循环链表head 的尾结点 *p 满足下列( )条件A)head->next==p; B)head==p; C)p->next==head; D)p->next==0 5、下列编码中属前缀码的是( )A){1,01,000,001} B){1,01,011,010} C){0,10,110,11} D){0,1,00,11} 6、对于哈希函数H(key)=key % 7,被称为同义词的关键字是( )A)36和50 B)23和39 C)15和44 D)25和517、将一个长度为n 的向量的第i 个元素删除时,需要前移( )个元素。

A) i B) n-i C) n+1 D) n-i+18、有一个有序表为{ 1,3,9,12,32,41,45,62,77,88,92,100},用折半查找法,若要找62,要经过( )次比较。

A. 3 B. 6 C. 4 D. 5 9、高度为 K 的二叉树最大的结点数为( )。

A)2k B)2k-1 C)2k -1 D)2k-1-110、对表长为n 的顺序表进行顺序查找,在查找概率相等的情况下,查找成功的平均查找长度为( )A) (n-1)/2 B) n/2 C) (n+1)/2 D) n11、如果求一个连通图中以某个顶点为根的高度最小的生成树,应采用( )A)深度优先搜索算法 B)广度优先搜索算法 C)求最小生成树的prim 算法 D)拓扑排序算法12、已知有向图的正邻接链表的存储结构如下,从顶点1出发的按深度优先遍历序列是( )。

4.1 算法及其特征(同步练习)-高中信息技术教科版(2019)必修1

4.1 算法及其特征(同步练习)-高中信息技术教科版(2019)必修1

4.1 算法及其特征(同步练习)-高中信息技术教科版(2019)必修1一、选择题1.下列关于算法描述错误的是( )A.算法是有限步骤内解决问题的方法B.算法必须具有可行性C.一个算法必须要有一个输入D.算法可以有多个输出2.下列关于算法的描述正确的是( )A.算法只能用流程图来表示B.一个算法,当没有输入时,也没有输出C.一个算法的执行步骤可以是无限的D.一个算法可以没有输入3.关于算法的基本特征,下列描述正确的是( )A.有0个或多个输入B.无输出C.无穷性D.不确定性4.通过列举所有的可能进行密码破解,用到的算法是( )A.递推B.递归C.穷举D.分治5.流程图符号,菱形的名称是( )A.判断框B.处理框C.输入/输出框D.起止框6.以下流程图描述的算法执行结果是( )A.10B.25C.30D.557.下列关于算法和程序设计语言之间关系的说法,正确的是( )A.算法独立于程序设计语言,可以由多种程序设计语言来实现B.程序设计语言与算法是一一对应的,每种算法由特定的程序设计语言来实现C.当我们设计算法时,需要优先考虑由哪种程序设计语言来实现D.评价一种算法的优劣,主要看能否被任何程序设计语言轻松实现8.如下图所示,该流程图不符合算法特征中的( )A.有穷性B.确定性C.有0个或多个输入D.有1个或多个输出9.算法的重要特征不包括( )A.唯一性B.确定性C.可行性D.有穷性10.某算法的流程图如图所示,若输入x的值为26,则下列说法正确的是( )A.变量x的终值可能为负数B.语句"x←x//2"共执行5次C.语句"x>0?"共执行5次D.输出变量s值为"01011"二、填空题11.递归的要素:________的递归的重要组成;________,它保证递归能在________的计算后得出结果,而不会产生________的情况。

12.递增数列用二分法查找时,先以________位置的元素作为比较对象,如果要找的元素值小于该中点元素,则将待查序列________为左半部分,否则为右半部分。

数据结构习题

数据结构习题

一、单项选择题1.下面程序段的时间复杂度为( C ) 。

for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A. O(m2) B. O(n2) C. O(m*n) D. O(m+n) 2.设有一个递归算法如下int fact(int n){串的长度 B.原串的子串 C.串的模式匹配 D.串的连接3.设有一个n×n的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A[i][i]存放于B 中( C )处。

A.(i+3)*i/2 B.(i+1)*i/2 C.(2n-i+1)*i/2 D.(2n-i-1)*i/24.在( C )运算中,使用顺序表比链表好。

5.A.插入B.删除C.根据序号查找 D.根据元素值查找6.带头结点的单链表head为空的判断条件是( C )。

7.A.head= =NULL B.head->next= =NULLC.head->next=head D.head!=NULL8.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( C )最节省时间。

A)单链表 B)循环链单表 C)带尾指针的循环链单表 D)带头结点的双循环链表9.栈的插入与删除操作在(A )进行。

A.栈顶 B.栈底 C.任意位置 D.指定位置10.设一个栈的输入序列为A、B、C、D,则借助一个栈所能得到的输出序列不可能是( D )。

11.A.ABCD B.DCBA C.ACDB D.DABC12.在一个链队中,假设F和R分别是队首和队尾指针,则删除一个结点的运算是( C )。

13.A.R=F->next; B.R=R->next; C.F=F->next; D.F=R->next;14.串是一种特殊的线性表,其特殊性体现在( B )。

15.A.可以顺序存储B.数据元素是一个字符16.C.可以链接存储D.数据元素可以是多个字符17.以下说法正确的是(C )。

时间复杂度练习题

时间复杂度练习题

时间复杂度练习题一、基础知识题1. 请简述时间复杂度的定义及其在算法分析中的重要性。

2. 常见的时间复杂度有哪些?请按从低到高的顺序排列。

4. 请举例说明一个O(n)时间复杂度的算法。

5. 如何计算一个循环语句的时间复杂度?二、选择题A. O(n^3)B. O(2^n)C. O(1)D. O(n!)2. 一个算法的时间复杂度为O(n),如果输入规模n增加10倍,其运行时间将如何变化?A. 减少到原来的1/10B. 增加到原来的10倍C. 增加到原来的100倍D. 不确定A. 二分查找B. 冒泡排序C. 快速排序D. 选择排序A. 遍历一个长度为n的数组B. 遍历一个长度为n的链表C. 遍历一个长度为n的数组,并对每个元素进行一次操作D. 遍历一个长度为n的数组,并对每对元素进行一次操作三、计算题for i in range(n):for j in range(n):print(i, j)for i in range(n):print(i)while head:print(head.val)head = head.next四、分析题def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, ni1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j] def binary_search(arr, target):left, right = 0, len(arr) 1while left <= right:mid = (left + right) // 2if arr[mid] == target:return midelif arr[mid] < target:left = mid + 1else:right = mid 1def factorial(n):if n == 0:return 1else:return n factorial(n1)五、判断题1. 一个算法的时间复杂度与输入数据的顺序无关。

java 递归笔试题目

java 递归笔试题目

以下是一些可能的Java递归笔试题目:
1. 阶乘计算:
实现一个函数,使用递归计算给定数字的阶乘。

例如,factorial(5) 应返回。

java代码:
2. 斐波那契数列:
实现一个函数,使用递归计算斐波那契数列的第n项。

斐波那契数列的定义是:。

java代码:
3. 汉诺塔问题:
实现一个函数,使用递归解决汉诺塔问题。

给定三个柱子A、B、C和n个圆盘,开始时所有圆盘都在柱子A上,目标是将所有圆盘移动到柱子C上,遵循以下规则:
每次只能移动一个圆盘。

每次移动时,圆盘必须放在比它大的圆盘上面。

不允许将任何较大的圆盘放在较小的圆盘上。

java代码:
4. N个台阶的走法:
给定一个楼梯有N个台阶,每次可以跳上1阶或2阶,计算总共有多少种不同的走法。

java代码:
5. 树的深度优先搜索(DFS):
给定一个树的数据结构,实现一个函数,使用递归进行深度优先搜索。

java代码:
这些题目涵盖了基本的递归概念和应用,包括简单的数学问题、经典的递归
问题以及数据结构中的递归搜索。

在实际的笔试中,题目可能会包含更复杂的场景和限制。

c++练习题(带答案)

c++练习题(带答案)

一、选择题1.C++语言属于( C )。

A)自然语言 B)机器语言 C)面向对象语言D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。

A)继承性 B)多态性 C)相似性 D)封装性3.可用作C++语言用户标识符的一组标识符是( B )。

A) void define +WORD B) a3_b3 _123 YNC) for -abc Case D) 2a DO sizeof4.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。

A) 0 B) 4 C) 8 D) 65.下列情况中,哪一种情况不会调用拷贝构造函数( B )?A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6.以下哪一关键字可用于重载函数的区分(C)A)extern B)static C)const D)virtual7.下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名[下标表达式];8.下列有关继承和派生的叙述中,正确的是( C )A)派生类不能访问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9.实现运行时多态的机制是( A )A)虚函数B)重载函数C)静态函数D)模版函数10.若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是( A)A)3 B)4 C)5 D)611.下列关于this指针的说法正确的是( B)A)this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C)this指针是指向虚函数表的指针D)this指针是指向类的函数成员的指针12.在下列关于C++函数的叙述中,正确的是(C)A)每个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己13.下列运算符中,不能重载的是(C)A)&& B)!= C). D)->14.下面程序的输出结果是(B)#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)1615.下面的程序段的运行结果为(D)char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’16.下面程序的输出结果是( C )#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; }private :int x ;};void main(){B b(2);b.dispb();}A)10,2 B)12,10 C)12,2 D)2,217.下面程序的输出结果是( C)?#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; }~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A)134122 B)123412 C)14302012 D)14321218.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:virtual void f() { cout << “f0+”; }void g() { cout << “g0+”; }};class Derived : public Base{public:void f() { cout << “f+”; }void g() { cout << “g+”; }};void main() { Derived d; Base *p = &d; p->f();p->g(); }A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+19.下面程序的输出结果是( C )#include <iostream>using namespace std;class Sample{friend long fun (Sample s){if (s.x < 2) return 1;return s.x * fun(Sample(s.x-1));}public:Sample (long a) { x = a; }private:long x;};void main(){int sum = 0;for (int i=0; i<4; i++){sum += fun(Sample(i));}cout << sum;}A)12 B)16 C)10 D)34 20.以下程序的输出结果是:(D)#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 321.有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.522.下列关于虚基类的描述中,错误的是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明 class B:virtual public A 说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23.有下类定义Class A {Char *a;Public:A():a(0){}A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间A=___________________;Strcpy(a,aa);~A() {delete [] a;}};正确的选择是(A)A. new char[strlen(aa)+1]B. char[strlen(aa)+1]C. char[strlen(aa)]D. newchar[sizeof(aa)-1]24.假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(d )。

软件设计师基础知识(选择题)模拟试卷11(题后含答案及解析)

软件设计师基础知识(选择题)模拟试卷11(题后含答案及解析)

软件设计师基础知识(选择题)模拟试卷11(题后含答案及解析) 题型有:1.1.一般情况下,将递归程序转化成为非递归程序应该设置(1),但是消除(2)时不需要使用。

A.堆栈B.队列C.堆栈或队列D.数组正确答案:A2.A.直接递归B.间接递归C.尾递归D.递推正确答案:C解析:将递归程序转化成为非递归程时,一般需要设置栈。

但对于尾递归可将其转化成递推,不需要栈。

尾递归调用就是作为方法的最后一个操作出现的递归的方法调用。

例如:打印数组A[n]值的递归算法:void recfunc(int A[], int n){if(n>=0){cout<<A[n]<<”“;n--;|recfunc(A, n);} } 可以改写为:void iterfunc(int A[], int n){ //消除了尾递归的非递归函数while(n>=0){cout<<”value”<<A[n]<<endl;n--;} }3.堆排序是一种基于(1)的排序方法,(2)不是堆。

A.计数B.插入C.选择D.归并正确答案:C4.A.15,28,25,56,68,63,30B.15,28,25,30,68,63,56C.68,28,63,25,15,56,30D.68,56,39,63,28,25,15正确答案:D5.在关系模型的完整性约束中,实体完整性规则是指关系中(2)参照完整性规则要求(3)。

A.不允许有主行B.属性值不允许为空C.主键值不允许为空D.外键值不允许为空正确答案:B6.A.不允许引用不存在的元组B.允许引用不存在的元组C.不允许引用不存在的属性D.允许引用不存在的属性正确答案:A解析:数据库的完整性是指数据的正确性和相容性,即数据库中的数据始终保持正确的状态,防止不符合语义的错误数据的输入和输出。

关系模型中的完整性约束条件包括实体完整性、参照完整性和用户自定义完整性。

实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。

二级MS Office高级应用(新大纲)选择题题目、解析及答案(树、二叉树)

二级MS Office高级应用(新大纲)选择题题目、解析及答案(树、二叉树)

二级MS Office高级应用(新大纲)选择题题目、解析及答案(树、二叉树)1.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。

A)10B)8C)6D)4参考答案:C解析:二叉树中,叶子结点(度为0的结点)是度为2的结点个数加1。

2.下列数据结构中,属于非线性结构的是()。

A) 循环队列B) 带链队列C) 二叉树D) 带链栈参考答案:C解析:队列、栈是线性结构;树是非线性结构。

3.下列叙述中正确的是()。

A) 有一个以上根结点的数据结构不一定是非线性结构B) 只有一个根结点的数据结构不一定是线性结构C) 循环链表是非线性结构D) 双向链表是非线性结构参考答案:B解析:例如,只有一个根结点的树,其是非线性结构。

4.一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()。

A) 16B) 10C) 6D) 4参考答案:A解析:在一棵二叉树中只有度为0、1、2三种结点。

且二叉树中,叶子结点(度为0的结点)是度为2的结点个数加1。

所以,度为2的结点是4,度为1的结点是25-5-4=16。

5.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。

A) 3B) 4C) 6D) 7参考答案:D解析:在一棵二叉树中只有度为0、1、2三种结点。

且二叉树中,叶子结点(度为0的结点)是度为2的结点个数加1。

所以,度为2的结点是0,度为1的结点是7-1-0=6。

除叶结点外,每一个结点都有一个分支。

每个结点在一层,共7层,如下图所示:6.对下列二叉树进行前序遍历的结果为()。

A) DYBEAFCZXB) YDEBFZXCAC) ABDYECFXZD) ABCDEFXYZ参考答案:C解析:先(前)序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:⑴ 访问根结点;⑵ 遍历左子树;⑶ 遍历右子树。

遍历过程发下:1:先访问根结点:A2:遍历A的左子树(递归调用);2_1:先访问A的左子树的根结点:B2_2:遍历B的左子树(递归调用);2_2_1:先访问B的左子树的根结点:D2_2_2:遍历D的左子树(递归调用),没有左子树;2_2_3:遍历D的右子树(递归调用)2_2_3_1:遍历D的右子树的根结点:Y;至此,B的左子树遍历完,向上回溯。

算法复习题

算法复习题

算法复习试题一、名词解释:1、算法:就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。

2、贪心算法:能够得到某种量度意义下的最优解的分级处理方法称为贪心算法。

3、分治法:分治法的求解思想就是把整个问题分成若干个小问题后分的治之4、递归过程:一个递归过程的执行类似于多个子程序的嵌套调用,递归过程是自己调用自己本身代码。

递归算法的特点:思路清晰,算法的描述简洁且易理解。

5、集合:在研究某一类对象时,可把这类对象的整体称为集合。

6、生成树:设G=(V,E)是一个无向连通图。

如果G的生成子图T=(V,E')是一棵树,则称T是G的一棵生成树。

7、算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

确定性:算法中每一条指令必须有确切的含义。

不存在二义性。

只有一个入口和一个出口可行性:就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。

输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。

输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。

8、迭代法:称辗转法,是一种不断用变量的旧值递推出新值的解决问题的方法。

9、贪婪法: 是一种不追求最优解,只希望得到较为满意解的方法。

贪婪法不要回溯10、动态规划:是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。

11、分支限界法:是一种用于求解组合优化问题的排除非解的搜索算法。

12、树:树是一个或多个结点的有限集合。

12、二元树:它是结点的有限集合,它或者为空,或者由一个根和两棵树(左子树和右子树)的不相交的二元树所组成。

13、二分检索树:T是一棵二元树,它或者为空,或者其每个结点含有一个可比较大小的数据元素。

14、图:图是数据结构,一个图G是由称之为结点V和边E的两个集合组成的15、最优解:使目标函数取极值(极大值或极小值)的可行解。

数据结构 第1-4章选择题(有 答案)

数据结构  第1-4章选择题(有 答案)
存储密度的定义在课本p41表
2."1的末尾,它是小于或等于1的一个实数。
(8)将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.n
B.2n-
1
C.2n
D.n-1
说明:
合并两个有序表的算法见课本算法
2."15和算法
2."1
6。"当两个表中的一个完全排在另一个表的前面时,比较的次数最少,此时只是后面表中的第一个元素与前面表中的元素逐一比较一次,然后就直接将两个表连接起来。
D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。
(11)若指定有n个元素的向量,则建立一个有序单链表的时间复杂性的量级是()。
2A.O
(1)
B.O(n)
C.O(n)
D.O(nlog
2n)说明:
这道题其实有些问题。若题目的意思是,有n个元素,事先我们不知道元素的大小次序,我们依此将这些元素一个个插入单链表中并且使得单链表有序。注意这是单链表,第8章的一些快速排序算法在这里用不上。因为是单链表,每次插入一个元素,只能从表头开始逐一比较,寻找插入的位置。在最坏的情况下,需要比较n(n-1)/2次,时间复杂性为O(n2)。但平均却是O(n)。
A.r-f
B.(n+f-r)%n
C.n+r-f
D.(n+r-f)%n说明:
当用数组表示循环队列时,f、r是数组元素的下脚标。由于是循环的,所以有可能r<f。若r>f,则r-f即为队列的元素个数;当r<意当r>f时,(n+r-f)%n=(r-f)%n=r-f。
(4)链式栈结点为:
说明:

编译原理练习题

编译原理练习题

《编译原理》练习题一一、填空题(每空1分)1.设G [S ]是一个文法,我们把能由文法的 开始符号s 推导出来的符号串α称为G 的一个句型。

当句型α仅由 终结符号 组成时 (即α∈V T *),则将它称为G 产生的句子。

2.从某一给定的状态q 出发,仅经过若干条 标记为 ε 的矢线所能达到的状态所组成的集合称为ε-CLOSURE(q)。

3.设G=(V N ,V T ,P,S)是一文法,我们说G 中的一个符号X ∈V N ∪V T 是有用的,是指X 至少出现在 一个句子 的推导过程中,否则,就说X 是无用的。

我们将不含形如A→A 的产生式和不含无用符号及无用产生式的文法称为 已化简的文法 。

4.我们常采用形如 (class, value)的二元式作为一个单词的 内部表示 。

其中,class 是一个整数,用来指示该单词的 类别 ,value 则是单词之值。

5.一个文法G[S]可表示成形如 ( V N ,V T ,P,S ) 的四元式。

其中V N ,V T ,P 均为非空的有限集,分别称为非终结符号集、终结符号集和产生式集, S ∈V N 为文法的开始符号。

此外,将出现在各产生式左部和右部的一切符号所组成的集合称为 字汇表 ,记作V 。

显然,V=V N ∪V T ,V N ∩V T =∅。

6.通常,可通过两种途径来构造词法分析程序。

其一是根据对语言中各类单词的某种描述或定义,用 手工的方式 构造词法分析程序;另外一种途径是所谓词法分析程序的 自动生成 。

7.设G 为一文法,A→α是G 的一个产生式,如果α具有υAδ的形式,其中υ,δ不同时为ε,则称产生式A→α是 直接递归的 。

若存在推导δυαA A *⇒⇒,则称产生式A→α是 递归的 。

8.设M=(K,Σ,f,S 0,Z)为一DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某一输入串w 所区分 ,是指从s,t 中之一出发,当扫视完w 之后到达M 的终态,但从其中的另一个状态出发,当扫视完同一个w 后而进入 非终态 。

软考程序员练习选择题5带答案解析

软考程序员练习选择题5带答案解析

内存按字节编址,地址从A4000H到CBFFFH,共有 (6) 字节。若用存储容量为32K*8bit的存储器芯片构成该内存,至少需要 (7) 片。
(6) A.128K
B.160K
C.64K
D.256K
(7) A.5
B.6
C.8
D.15
(11)如果所表示的真值为-1,则根据定义可判断出采用的是补码形式。或采用简单的判断方法,因为对应的数为-1,则加上1以后为0,且11111111加1后满足补码相加的同余性,可判断出为补码形式。
若(E)n表示E是n进制的数,则下列数中最小数是 (12) 。
(12) A.(2E)16
B.(55)8
(16) A.ISO9000
B.CMM C.IETF
D.SW-CMM
【解析】ISO9000是指由国际标准化组织(ISO)所属的质量管理和质量保证技术委员会ISO/TC176工作委员会制定并颁布的关于质量管理体系的族标准的统称。
解释程序的功能是 (17) 。
(17) A.将高级语言程序转换为目标程序
【解析】因为需求控制会影响软件开发的以后各阶段,所以它对控制重复周期最有效。
系统流程图是描述 (14) 的工具。
(14) A.逻辑系统
B.程序系统
C.体系结构
D.物理系统
【解析】系统流程图是进行系统分析时常用的一种描述方法,它用物理符号以黑盒子的形式描绘系统里面的每个部件。它表达的仅是信息在系统各部件之间流动的情况,而不是对信息进行加工处理的控制过程。
【解析】这是在考查十六进制运算的内容。
(6)内存按字节编址,地址从A4000H到CBFFFH共有的字节数:CBFFFH-A3FFFH=28000H=160×210=160K。

计算机等级考试NCRE计算机等级考试二级模拟题2020年(77)_真题无答案

计算机等级考试NCRE计算机等级考试二级模拟题2020年(77)_真题无答案

计算机等级考试(NCRE)计算机等级考试二级模拟题2020年(77) (总分100, 做题时间90分钟)单项选择题1. 关于递归函数的描述,以下选项中正确的是• A.包含一个循环结构• B.函数比较复杂• C.函数内部包含对本函数的再次调用• D.函数名称作为返回值SSS_SINGLE_SELA AB BC CD D2. 关于递归函数基例的说明,以下选项中错误的是• A.递归函数必须有基例• B.递归函数的基例不再进行递归• C.每个递归函数都只能有一个基例• D.递归函数的基例决定递归的深度SSS_SINGLE_SELA AB BC CD D3. 以下选项中,不属于函数的作用的是• A.提高代码执行速度• B.复用代码• C.增强代码可读性• D.降低编程复杂度SSS_SINGLE_SELA AB BC CD D4. 假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是• A.参数是列表类型时,改变原参数的值• B.参数是整数类型时,不改变原参数的值• C.参数是组合类型(可变对象)时,改变原参数的值• D.参数的值是否改变与函数中对变量的操作有关,与参数类型无关SSS_SINGLE_SELA AB BC CD D5. 在Python中,关于函数的描述,以下选项中正确的是• A.一个函数中只允许有一条return语句•**中,def和return是函数必须使用的保留字•**函数定义中没有对参数指定类型,这说明,参数在函数中可以当作任意类型使用D.函数eval()可以用于数值表达式求值,例如eval("2*3+1")SSS_SINGLE_SELA AB BC CD D6. 给出如下代码:def func(a,b):c=a**2+bb=areturn ca=10b=100c=func(a,b)+a以下选项中描述错误的是• A.执行该函数后,变量c的值为200• B.该函数名称为func• C.执行该函数后,变量b的值为100• D.执行该函数后,变量a的值为10SSS_SINGLE_SELA AB BC CD D7. 在Python中,关于全局变量和局部变量,以下选项中描述不正确的是• A.一个程序中的变量包含两类:全局变量和局部变量• B.全局变量一般没有缩进• C.全局变量在程序执行的全过程有效• D.全局变量不能和局部变量重名SSS_SINGLE_SELA AB BC CD D8. 关于面向对象和面向过程编程描述,以下选项中正确的是• A.面向对象编程比面向过程编程更为高级• B.面向对象和面向过程是编程语言的分类依据• C.模块化设计就是面向对象的设计• D.所有面向对象编程能实现的功能采用面向过程同样能完成SSS_SINGLE_SELA AB BC CD D9. 以下选项中,对于递归程序的描述错误的是• A.书写简单• B.执行效率高• C.一定要有基例• D.递归程序都可以有非递归编写方法SSS_SINGLE_SELA AB BC CD D10. 下面代码的输出结果是>>>f=lambda x,y:y+x>>>f(10,10)•**•**•**,10**SSS_SINGLE_SELA AB BC CD D11. 关于形参和实参的描述,以下选项中正确的是• A.函数定义中参数列表里面的参数是实际参数,简称实参• B.参数列表中给出要传入函数内部的参数,这类参数称为形式参数,简称形参• C.程序在调用时,将实参复制给函数的形参• D.程序在调用时,将形参复制给函数的实参SSS_SINGLE_SELA AB BC CD D12. 关于lambda函数,以下选项中描述错误的是•**函数也称为匿名函数•**函数将函数名作为函数结果返回C.定义了一种特殊的函数**不是Python的保留字SSS_SINGLE_SELA AB BC CD D13. 以下选项中,对于函数的定义错误的是•** vfunc(a,b=2):•** vfunc(a,b):•** vfunc(a,*b):** vfunc(*a,b):SSS_SINGLE_SELA AB BC CD D14. 关于函数的参数,以下选项中描述错误的是• A.在定义函数时,如果有些参数存在默认值,可以在定义函数时直接为这些参数指定默认值• B.在定义函数时,可以设计可变数量参数,通过在参数前增加星号(*)实现• C.可选参数可以定义在非可选参数的前面• D.一个元组可以传递给带有星号的可变参数SSS_SINGLE_SELA AB BC CD D15. 关于return语句,以下选项中描述正确的是• A.函数中最多只有一个return语句• B.函数必须有一个return语句•**只能返回一个值D.函数可以没有return语句SSS_SINGLE_SELA AB BC CD D16. 关于函数,以下选项中描述错误的是• A.函数是一段具有特定功能的、可重用的语句组• B.函数能完成特定的功能,对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式即可• C.使用函数的主要目的是降低编程难度和代码重用**使用del保留字定义一个函数SSS_SINGLE_SELA AB BC CD D17. 关于Python的全局变量和局部变量,以下选项中描述错误的是• A.全局变量指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效• B.局部变量指在函数内部使用的变量,当函数退出时,变量依然存在,下次函数调用可以继续使用• C.使用global保留字声明简单数据类型变量后,该变量作为全局变量使用• D.简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放SSS_SINGLE_SELA AB BC CD D18. 关于Python的lambda函数,以下选项中描述错误的是•**用于定义简单的、能够在一行内表示的函数B.可以使用lambda函数定义列表的排序原则•**=lambda x,y:x+y执行后,f的类型为数字类型**函数将函数名作为函数结果返回SSS_SINGLE_SELA AB BC CD D19. 下面代码实现的功能描述为def fact(n):if n==0:return 1else:return n*fact(n-1)num=eval(input("请输入一个整数:"))print(fact(abs(int(num))))• A.接受用户输入的整数N,输出N的阶乘值• B.接受用户输入的整数N,判断N是否是素数并输出结论• C.接受用户输入的整数N,判断N是否是整数并输出结论• D.接受用户输入的整数N,判断N是否是水仙花数SSS_SINGLE_SELA AB BC CD D20. 给出如下代码:def fact(n):s=1for i in range(1,n+1):s*=ireturn s以下选项中描述错误的是• A.代码中n是可选参数•**(n)函数功能为求n的阶乘•**是局部变量**()函数是Python内置函数SSS_SINGLE_SELA AB BC CD D21. 给出如下代码:ls=["car","truck"]def funC(a):ls.append(a)returnfunC("bus")print(ls)以下选项中描述错误的是•**(a)代码中的ls是全局变量B.执行代码输出结果为['car','truck']•**(a)代码中的ls是列表类型**(a)中的a为非可选参数SSS_SINGLE_SELA AB BC CD D22. 给出如下代码:ls=["car","truck"]def funC(a):ls=[]ls.append(a)returnfunC("bus")print(ls)以下选项中描述错误的是• A.代码函数定义中,ls.append(a)中的ls是局部变量• B.执行代码输出结果为['car','truck']•**(a)代码中的ls是列表类型D.执行代码输出结果为['car','truck','bus']SSS_SINGLE_SELA AB BC CD D23. 给出如下代码:import turtledef drawLine(draw):turtle.pendown() if draw else turtle.penup()turtle.fd(50)turtle.right(90)drawLine(True)drawLine(True)drawLine(True)drawLine(True)以下选项中描述错误的是• A.运行代码,在Python Turtle Graphics中,绘制一个正方形• B.代码def drawLine(draw)中的draw可取值True或者False• C.代码drawLine(True)中True替换为-1,运行代码结果不变• D.代码drawLine(True)中True替换为0,运行代码结果不变SSS_SINGLE_SELA AB BC CD D24. 给出如下代码:import turtledef drawLine(draw):turtle.pendown()if draw else turtle.penup()turtle.fd(50)turtle.right(90)drawLine(True)drawLine(0)drawLine(True)drawLine(True)turtle.left(90)drawLine(0)drawLine(True)drawLine(True)以下选项中描述错误的是• A.运行代码,在Python Turtle Graphics中,绘制一个数码管数字2 • B.代码drawLine(True)中True替换为0,运行代码结果不变• C.代码drawLine(True)中True替换为-1,运行代码结果不变• D.代码def drawLine(draw)中的draw可取数值0、1、-1等SSS_SINGLE_SELA AB BC CD D25. 下面代码的运行结果是def func(num):num+=1a=10func(a)print(a)•**•**C.出错**SSS_SINGLE_SELA AB BC CD D26. 下面代码的输出结果是def func(a,b):return a>>bs=rune(5,2)print(s)•**•**•****SSS_SINGLE_SELA AB BC CD D27. 下面代码的输出结果是def func(a,b):a*=breturn as=func(5,2)print(s)•**•**•****SSS_SINGLE_SELA AB BC CD D28. 下面代码的输出结果是def f2(a):if a>33:return Trueli=[11,22,33,44,55]res=filter(f2,li)print(list(res))• A.[44,55]• B.[33,44,55]• C.[22,33,44]• D.[11,33,55]SSS_SINGLE_SELA AB BC CD D29. 下面代码的输出结果是def fib(n):a,b=1,1for i in range(n-1):a,b=b,a+breturn aprint(fib(7))•**•**•****SSS_SINGLE_SELA AB BC CD D30. 下面代码的输出结果是def hello_world():print('ST',end="*")def three_hellos():for i in range(3):hello_world()three_hellos()•***ST*ST*•***ST*•***D.***SSS_SINGLE_SELA AB BC CD D31. 下面代码的输出结果是def exchange(a,b):a,b=b,areturn(a,b)x=10y=20x,y=exchange(x,y)print(x,y)•** 10•**, 10•** 10** 20SSS_SINGLE_SELA AB BC CD D32. 下面代码的输出结果是MA=lambda x,y: (x>y)*x+(x<y)*yMI=lambda x,y: (x>y) *y+(x<y)*xa=10b=20print(MA(a,b))print(MI(a,b))•**,10•**,20•**,10**,20SSS_SINGLE_SELA AB BC CD D33. 关于下面的代码,以下选项中描述正确的是>>>list(range(0,10,2))• A.执行结果为0,2,4,6,8• B.按位置参数调用• C.按关键字参数调用• D.按可变参数调用SSS_SINGLE_SELA AB BC CD D34. 关于下面代码,以下选项中描述正确的是def fact(n,m=1):s=1for i in range(1,n+1):s*=ireturn s//mprint(fact(m=5,n=10))• A.参数按照名称传递• B.按位置参数调用• C.执行结果为10886400• D.按可变参数调用SSS_SINGLE_SELA AB BC CD D35. 关于函数的返回值,以下选项中描述错误的是• A.函数可以返回0个或多个结果• B.函数必须有返回值• C.函数可以有return,也可以没有**可以传递0个返回值,也可以传递任意多个返回值SSS_SINGLE_SELA AB BC CD D36. 关于函数局部变量和全局变量的使用规则,以下选项中描述错误的是• A.对于基本数据类型的变量,无论是否重名,局部变量与全局变量不同• B.可以通过global保留字在函数内部声明全局变量• C.对于组合数据类型的变量,如果局部变量未真实创建,则是全局变量**不可以传递任意多个函数局部变量返回值SSS_SINGLE_SELA AB BC CD D37. 关于函数,以下选项中描述错误的是• A.函数使用时需要了解函数内部实现细节• B.函数:具有特定功能的可重用代码片段,实现解决某个特定问题的算法• C.函数在需要时被调用,其代码被执行• D.函数主要通过接口(interface)与外界通信,传递信息SSS_SINGLE_SELA AB BC CD D38. 关于函数的目的与意义,以下选项中描述错误的是• A.程序功能抽象,以支持代码重用• B.函数能调用未实现的函数• C.使用时无须了解函数内部实现细节• D.有助于采用分而治之的策略编写大型复杂程序SSS_SINGLE_SELA AB BC CD D39. 关于函数,以下选项中描述错误的是• A.函数也是数据• B.函数定义语句可执行• C.函数名称不可赋给其他变量• D.一条函数定义定义一个用户自定义函数对象SSS_SINGLE_SELA AB BC CD D40. 关于函数的参数传递(parameter passing),以下选项中描述错误的是• A.形式参数是函数定义时提供的参数• B.实际参数是函数调用时提供的参数•**参数传递时不构造新数据对象,而是让形式参数和实际参数共享同一对象D.函数调用时,需要将形式参数传递给实际参数SSS_SINGLE_SELA AB BC CD D41. 关于函数的关键字参数使用限制,以下选项中描述错误的是• A.关键字参数必须位于位置参数之前• B.关键字参数必须位于位置参数之后• C.不得重复提供实际参数• D.关键字参数顺序无限制SSS_SINGLE_SELA AB BC CD D42. 下面代码的输出结果是a=4a^=3b=a^2print(a,end=",")print(b)•**,5•**,4096•**,7**,3SSS_SINGLE_SELA AB BC CD D43. 执行下面代码,运行错误的是def f(x,y=0,z=0):pass•**(1,2,3)•**(1,2)•**(1,,3)**(1)SSS_SINGLE_SELA AB BC CD D44. 执行下面代码,运行错误的是def f(x,y=0,z=0):pass•**(1,y=2,z=3)•**(1,z=3)•**(z=3,x=1,y=2)**(1,x=1,z=3)SSS_SINGLE_SELA AB BC CD D45. 执行下面的代码,运行正确的是def f(x,y=0,z=0):pass•**(1,x=1,z=3)•**(x=1,2)•**(x=1,y=2,z=3)**(1,y=2,t=3)SSS_SINGLE_SELA AB BC CD D46. 关于嵌套函数,以下选项中描述错误的是• A.嵌套函数是在函数内部定义函数• B.内层函数仅供外层函数调用,外层函数之外不得调用•** f():print("Outer function f")def g():print("Inner function g")g()f()** f():print("Outer function f")def g():print("Inner function g")g()f.g()SSS_SINGLE_SELA AB BC CD D47. 下面代码的执行结果是>>>def area(r,pi=3.14159):return pi*r*r>>>area(pi=3.14,r=4)• A.出错• B.无输出•****SSS_SINGLE_SELA AB BC CD D48. 下面代码的执行结果是>>>def area(r,pi=3.14159):return pi*r*r>>>area(3.14,4)• A.出错• B.无输出•****SSS_SINGLE_SELA AB BC CD D49. 下面代码的执行结果是def greeting(args1, *tupleArgs, **dictArgs): print(args1)print(tupleArgs)print(dietArgs)names=['HTY','LFF','ZH']info={'schoolName':'NJRU','City':'Nanjing'}greeting('Hello,',*names,**into)• A.出错• B.无输出• C.['HTY','LFF','ZH']**,('HTY','LFF','ZH'){'sehoolName':'NJRU','City':'Nanjing'}SSS_SINGLE_SELA AB BC CD D50. 下面代码的执行结果是def greeting(args1, *tupleArgs, ** dictArgs): print(args1)print(tupleArgs)print(dietArgs)names=['HTY','LFF','ZH']info={'schoolName':'NJRU','City':'Nanjing'}greeting(*names,'Hello,',**info)• A.出错• B.无输出• C.['HTY','LFF','ZH']**('LFF','ZH','Hello,'){'schoolName':'NJRU','City':'Nanjing'}SSS_SINGLE_SELA AB BC CD D1。

数据结构试题(含答案)

数据结构试题(含答案)

数据结构试题(含答案)一.是非题(勾选“√“用于更正和勾选”√1.数据结构可用三元公式(D,s,P)表示,其中:D为数据对象,s为D上的关系,p是对d的基本操作集。

×2.线性表的链式存储结构具有直接访问表中任何元素的优点。

×3. 字符串是特定于数据对象的线性表。

4.二叉树是一棵结点的度最大为二的树。

×5.邻接多表可用于表示无向图或有向图。

×6. 所有顶点的拓扑序都可以从任何有向图中得到。

× 7. 无向连通图的生成树是其最大连通子图。

× 8. 二叉排序树的搜索长度最多为log2n。

×9.对于一棵m阶的b-树.树中每个结点至多有m个关键字。

除根之外的所有非终端结点至几乎没有┌ M/2┌ 关键词。

×10.对于目前所知的排序方法,快速排序具有最好的平均性能。

11.顺序存储模式具有存储密度高、插入和删除操作效率高的优点。

× 12. 二维数组是一个线性表,其数据元素是线性表。

13.连通图g的生成树是一个包含g的所有n个顶点和n-1条边的子图。

×14.折半查找不适用于有序链表的查找。

15.完全二叉树必定是平衡二叉树。

16.中间顺序线索二叉树的优点是,在中间顺序下很容易找到直接前导节点和直接后继节点。

17.队列是一种完全不同于线性表的数据结构。

× 18. 平均搜索长度与记录的搜索概率有关。

19.二叉树中每个结点有两个子结点,而对一般的树,则无此限制,所以,二叉树是树的特殊情形。

×20.算法的时间复杂度越高,可读性越差;相反,算法的可读性越好,时间复杂度越差。

×二.选择题1.如果编号为1、2和3的列车车厢依次通过开关堆调度,则无法获得(E)的顺序。

a:1,2,3b:1,3,2c:2,1,3d:2,3,1e:3,1,2f:3,2,12.递归程序可借助于(b)转化为非递归程序。

a:线性表B:堆栈C:队列D:数组3.在下列数据结构中(c)具有先进先出(fifo)特性,(b)它具有先进先出的特点。

本题要求采用递归方式求不带头结点的单链表的长度。

本题要求采用递归方式求不带头结点的单链表的长度。

本题要求采用递归方式求不带头结点的单链表的长度。

在计算机科学中,递归是一种常见的算法思想,可以应用于各种数据结构和问题求解中。

在单链表中,我们可以使用递归的方式来求解不带头结点的单链表的长度。

本文将深入探讨递归方式求解单链表长度的方法,以及对递归思想的理解和个人观点。

一、递归方式求解不带头结点的单链表长度在单链表中,每个节点都包含一个数据元素和一个指向下一个节点的指针。

如果我们想要求解不带头结点的单链表长度,可以使用递归的方式来实现。

递归的思想是将一个大问题分解为一个或多个与原问题相似的小问题,通过不断地求解小问题,最终达到解决大问题的目的。

为了求解不带头结点的单链表长度,我们可以设计一个递归函数,如下所示:```c++int getLength(Node* node) {if (node == NULL) {return 0; // 递归基}return 1 + getLength(node->next); // 递归式}```以上代码中,getLength函数接受一个节点作为参数,如果节点为空,即表示链表结束,返回长度为0;否则,返回1加上下一个节点的长度,递归地求解整个链表的长度。

使用递归方式求解单链表长度的优点是代码简洁、易于理解,但也需要注意递归深度过大可能导致栈溢出的问题。

在实际应用中,可以根据具体情况选择合适的解决方案。

二、对递归思想的个人理解和观点递归作为一种常见的算法思想,在解决问题时具有一定的灵活性和普适性。

通过将大问题分解为小问题,并不断地求解小问题,最终达到解决大问题的目的。

在算法设计和实现中,递归能够简化代码逻辑,提高代码的可读性和可维护性。

然而,递归也存在一些问题,如递归深度过大可能导致栈溢出、性能较低等。

在实际应用中,需要慎重选择是否使用递归,并结合问题的特点选择合适的解决方案。

总结回顾通过本文的探讨,我们深入了解了递归方式求解不带头结点的单链表长度的方法。

递归思想能够简化问题、提高代码的可读性和可维护性,但也需要注意递归深度过大可能导致的问题。

中级软件设计师上午模拟试题及答案解析(6)

中级软件设计师上午模拟试题及答案解析(6)

中级软件设计师上午模拟试题及答案解析(6)(1/75)选择题第1题以比较为基础的排序算法在最坏情况下的计算时间下界为______。

A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)下一题(2/75)选择题第2题若对27个元素只进行三趟多路归并排序,则选取的归并路数为______。

A.2B.3C.4D.5上一题下一题(3/75)选择题第3题堆是一种数据结构,______是堆。

A.(10,50,80,30,60,20,15,18)B.(10,18,15,20,50,80,30,60)C.(10,15,18,50,80,30,60,20)D.(10,30,60,20,15,18,50,80)上一题下一题(4/75)选择题第4题一个算法是对某类给定问题求解过程的精确描述,算法中描述的操作都可以通过将已经实现的基本操作执行有限次来实现,这句话说明算法具有______特性。

A.有穷性B.可行性C.确定性D.健壮性上一题下一题(5/75)选择题第5题关于算法与数据结构的关系,______是正确的。

A.算法的实现依赖于数据结构的设计B.算法的效率与数据结构无关C.数据结构越复杂,算法的效率越高D.数据结构越简单,算法的效率越高上一题下一题(6/75)选择题第6题下面的程序段违反了算法的______原则。

void sam(){ int n=2;while(!odd(n))n+=2;printf(n);}A.有穷性B.确定性C.可行性D.健壮性上一题下一题(7/75)选择题第7题在字符串的模式匹配过程中,如果模式串的每个字符依次和主串中的一个连续的字符序列相等,则称为匹配成功。

如果不能在主串中找到与模式串相同的子串,则称为匹配失败。

在布鲁特—福斯模式匹配算法(朴素的或基本的模式匹配)中,若主串和模式串的长度分别为n和m(且n远大于m),且恰好在主串末尾的n个字符处匹配成功,则在上述的模式匹配过程中,字符的比较次数最多为______。

软件工程练习题

软件工程练习题

软件工程练习题一、填空或选择题1、程序的三种基本结构是(A),它们的共同特点是(B),结构程序设计的一种基本方法是(C)。

软件测试的目的是(D),软件排错的目的是(E)。

A(1)过程,子程序,分程序(2)顺序,条件,循环(3)递归,堆栈,队列(4)调用,返回,转移B(1)不能嵌套使用(2)只能用来写简单程序(3)已经用硬件实现(4)只有一个入口和一个出口C(1)筛选法(2)递归法(3)归纳法(4)逐步求精法D(1)证明程序中没有错误(2)发现程序中的错误(3)测量程序的动态特性(4)检查程序中的语法错误E(1)找出错误所在改正之(2)排除存在错误的可能性(3)对错误性质进行分析(4)统计出错的次数2、软件测试的目的是(A)。

为提高测试的效率,应该(B)。

使用白盒测试方法时,测试数据应根据(C)和指定的覆盖标准。

一般说来,与设计测试数据无关的文档是(D),软件集成测试最好由(E)承担,以提高集成测试的效果。

A(1)评价软件质量(2)发现软件的错误(3)找出软件中的所有错误(4)证明软件是正确的B(1)随机地选取测试数据(2)取一切可能的输入数据作为测试数据(3)在完成编码以后制定软件测试计划(4)选择发现错误的可能性大的数据作为测试数据C(1)程序内部逻辑(2)程序的复杂程序(3)使用说明书(4)程序的功能D(1)需求规格说明书(2)总体设计说明书(3)源程序(4)项目开发计划E(1)该程序的设计人员(2)该软件开发组的负责人(3)该软件的编程人员(4)不属于该软件开发组的软件设计人员3、软件测试中常用的静态测试分析方法是(A)和(B)。

(B)用来检查模块或子程序间的调用是否正确。

分析方法(白盒法)中常用的方法是(C)方法。

非分析方法(黑盒法)中常用的方法是(D)方法和(E)方法。

(E)在单元测试后进行。

A,B(1)引用分析(2)算法分析(3)可靠性分析(4)效率分析(5)接口分析(6)操作性分析C,D,E(1)路径测试(2)等价类(3)边界值分析(4)归纳测试(5)综合测试(6)追踪(7)深度优待(8)排错(9)相对图4、原型法是用户和设计者之间执行的一种交互过程,适用于(A)系统。

python递归 选择题

python递归 选择题

python递归选择题递归的定义递归是一种编程技术,其中函数在自身内部调用自身。

这可以通过多种方式实现,具体取决于编程语言,但在 Python 中通常使用 `def` 关键字实现。

递归的优点和缺点递归的优点包括:简洁性:递归解决方案通常比迭代解决方案更简洁,因为它们不需要显式跟踪函数调用堆栈。

可读性:递归代码通常更容易阅读和理解,因为它遵循函数调用的自然顺序。

可证明性:递归函数易于使用归纳法进行证明,因为基例和归纳步骤都是明确定义的。

然而,递归也有一些缺点:空间效率:递归函数在每次调用时都会创建一个新的栈帧,这可能会导致空间效率低下。

时间效率:递归函数通常比迭代函数运行得更慢,因为它们需要为每次函数调用分配更多的时间。

堆栈溢出:如果递归函数调用次数过多,可能会导致堆栈溢出。

递归示例以下 Python 代码片段演示了递归如何用于计算阶乘:```pythondef factorial(n):if n == 0:return 1else:return n factorial(n-1)```在此示例中,`factorial` 函数在自身内部调用自身,直到到达基例(即 `n == 0`)。

在每次递归调用中,函数将 `n` 乘以自身,直到达到基例。

什么时候使用递归递归是解决问题的一个强大工具,但它并不总是最佳选择。

在选择是否使用递归时,需要考虑以下因素:问题规模:递归解决方案可能不适用于规模非常大的问题,因为它们可能会导致空间效率低下或堆栈溢出。

可替代方案:如果存在更有效的迭代解决方案,则最好使用它而不是递归。

可读性:如果递归解决方案比迭代解决方案更易于阅读和理解,则可以使用它,即使它在效率上稍有降低。

结论递归是一种强大的编程技术,可用于解决各种问题。

然而,在选择使用递归时,需要考虑其优点和缺点,并根据具体问题做出最佳选择。

华为云计算练习(习题卷1)

华为云计算练习(习题卷1)

华为云计算练习(习题卷1)第1部分:单项选择题,共42题,每题只有一个正确答案,多选或少选均不得分。

1.[单选题]华为云容器镜像服务SWR是一种支持镜像全生命周期管理的服务, 提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。

您可以通过( )、Docker CLI和原生API上传、下载和管理Docker镜像。

A)页面B)obsC)块存储D)SSD答案:A解析:2.[单选题]如果本地域名服务无缓存,当采用递归方法解析某域名时,用户主机、本地域名服务器、发送的域名请求消息数分别为?A)1 条,1 条B)1 条,2 条C)2 条,2 条D)2 条,1 条答案:B解析:3.[单选题]允许所有IP地址通过SSH远程连接到Linux云服务器的安全组策略正确是:( )。

A)入方向---协议UDP----端口22-----源地址:0.0.0.0/0B)入方向---协议TCP----端口22-----源地址:0.0.0.0/0C)入方向---协议ICMP----端口22-----源地址:0.0.0.0/0D)入方向---协议HTTP----端口22-----源地址:0.0.0.0/0答案:B解析:4.[单选题]在对象存储中( )是作为存储对象的容器。

A)桶B)对象C)云硬盘D)vdc答案:A解析:5.[单选题]每个弹性伸缩组同一时刻支持使用( )个伸缩策略。

A)60B)50C)40D)30答案:B解析:6.[单选题]虚拟IP在云服务器主备切换中的作用是A)高可用性B)负载均衡C)容灾D)备份答案:A解析:7.[单选题]ELBHTTP默认端口号是:( )。

A)80B)443C)8080D)8090答案:A解析:8.[单选题]下列不属于APM系统默认角色名称的有:( )。

A)APM systemB)APM FullAccessC)APM ReadOnlyAccessD)APM Administrator答案:A解析:9.[单选题]ELB支持软件负载均衡,不包括()。

二级python选择模拟题8

二级python选择模拟题8

L一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。

而实现递归调用中的存储分配通常用A 链表B 栈C队列D 数组.某棵二叉树上第5层的最大的结点数是A15 B 32 C8 D 16.在结构化设计方法中,生成的结构图中,带有箭头的连线表示A数据的流向B控制程序的执行顺序C程序的组成成分D模块之间的调用关系2,下面选项中不属于面向对象程序设计特征的是A类比性B封装性.如果name二”全国计算机等级考试二级Python",以下选项中输出错误的是A»> print[name[:ll]J全国计算机等级考试二级B>»print(name[:]J全国计算机等级考试二级Python C»> print(name[ll:]JPythonD»> print(name[O], name[8], name[-l]J全试.下列程序的运行结果是>>> s = "PYTHON”»> print["{0:3}".format(s]]A'PYT'B'PYTH'C'PYTHON'D'PYTHON1.以下程序的输出结果是:si二“袋鼠”print("{0}生活在主要由母{0}和小{0}组成的较小的群体里。

【format(sl))A 袋鼠生活在主要由母袋鼠和小袋鼠组成的较小的群体里。

BTypeError: tuple index out of rangeC{0}生活在主要由母{0}和小{0}组成的较小的群体里。

DIndexError: tuple index out of range35.定义x=2,6,表达式int(x)的结果是:A32 C 2.0D2.639以下对Python程序设计风格描述错误的选项是:APython中不允许把多条语句写在同一行BPython语句中,增加缩进表示语句块的开始,减少缩进表示语句块的退出CPython中,需要把多条语句写在同一行时,要用了号隔开DPython可以将一条长语句分成多行显示,使用续航符40以下代码段,不会输出A, B, C,的选项是:A i = 0while i < 3:print(chr(i+65),end="/']i += 1continue B for i in range(3):print(chr(65+i)/end=,7,) C i = 0while i < 3:print[chr[i+65),end=breaki += 1for i in [0,1,2]: print[chr(65+i),end='7,)c多态性D继承性5,模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的A 局部化和封装化B抽象和信息隐蔽C激活机制和控制方法D内聚性和耦合性,软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段的任务的是A测试B实现C可行性研究D设计6,下面不属于软件测试实施步骤的是A确认测试B集则试c单元测试D回归测试.软件工程的三要素是A定义、方法和过程B建模、方法和过程C建模、方法和工具D方法、工具和过程7.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是A多对一B 一对多C 多对多D ——对■——.数据库系统的三级模式不包括A 外模式B 内模式C 概念模式D数据模式.下面代码的输出结果是printf 0.1 + 0.2==0.3) A-1BC whileD False.下面代码的执行结果a = 10.99 print(complex(a])A0.99B10.99+jC10.99D(10.99+Oj)8.关于Python字符编码,以下选项中描述错误的是Achr(x)和ord(x)函数用于在单字符和Unicode编码值之间进行转换BPython字符编码使用ASCII编码Cprint chr(65)输出ADprint(ord(,a,)J 输出979.关于Python循环结构,以下选项中描述错误的是Abreak用来结束当前当次语句,但不跳出当前的循环体B遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

递归程序设计1.计算最大约数gcd(m,n)可用递归形式定义如下:若m%n等于0,则gcd(m,n)等于n否则,gcd(m,n)等于gcd(n,m%n)。

#include<iostream>using namespace std;int gcd(int m, int n){if (m%n == 0)return n;else return gcd(n, m%n);}int main(){int m, n;cout << "m=";cin >> m;cout << "n=";cin >> n;cout <<gcd(m, n);system("pause");return 0;}3.27.2017int gcd(int m,int n){if(m%n==0)return n;else return gcd(n,m%n);}int main(){int n,m;while(1){cin>>m>>n;if(m==0)break;cout <<"gcd="<<gcd(m,n)<<endl;}system("pause");return 0;}编写一递归函数,求最大约数,并测试#include<iostream>using namespace std;int gcd(int m, int n){if (m%n == 0) return n;else return gcd(n , m %n );} int main(){int m, n; cout << "n="; cin >> n;cout << "m=";cin >> m;cout << gcd(m, n);system("pause"); return 0;}。

2.编写一递归函数,计算下面的级数:ii m 1......31211)(++++= #include <iostream>using namespace std;double f(double i ){if (i == 1)return 1; else return (1/i *f(i -1)); }int main(){int i;cout << "i="; cin >> i;cout << f(i);system("pause"); return 0; }3.27.2017double k4(double n ){if (n ==1)return 1;else return (1/n +k4(n -1));}int main() {double n,m; while (1){cin>>n;if (n==0)break ;cout <<"k4="<<k4(n)<<endl;}system("pause");return 0;}3.编写一递归函数,计算下面的级数:12.....11594735231)(+++++++=i i i m #include <iostream>using namespace std;double x( double n ){if (n > 0) { if (n == 1)return (1 / 3);else return n / (2 * n + 1) + x(n - 1);}}int main(){cout << x(1) << endl;cout << x(2) << endl;cout << x(3) << endl;system("pause");return 0;}4.编写一函数,逆序输出一个整数n 。

函数头如下:void reverseDisplay(int value)#include <iostream>using namespace std;void reverseDisplay(int value ) {if (value > 0){cout << value % 10;reverseDisplay(value / 10);}}int main(){int i;cout << "i=";cin >> i; reverseDisplay(i);system("pause");return 0;}3.27.2017void k5(int n){if(n>0) {cout <<n%10;k5(n/10);}}int main(){double n,m;while(1){cin>>n;if(n==0)break;k5(n);}system("pause");return 0;}5.编写一函数,逆序输出一个字符串,函数头如下:void reverseDisplay(const char *s)6.编写一递归函数,统计一个指定字符在一个字符串中出现的次数,函数头如下: int count(char *,char )7.编写一递归函数,计算一个整数中所有数字之和。

函数头如下: int sumDigit(long n)#include<iostream>using namespace std;int sumDigit(long n){if (n < 10)return n;else return ((n % 10) + sumDigit(n / 10));}int main(){int m, n;cout << "n=";cin >> n;n=abs(n);cout << sumDigit(n);system("pause");return 0;}8. 编写一递归函数,计算x n。

#include<iostream>using namespace std;int p(int x, int n){if (n== 0)return 1;if (x > 0 && n > 0){if (n == 1)return x;else return (x*p(x, n - 1));}}int main() {int x, n;cout <<"x=";cin >> x;cout <<"n=";cin >> n;if (x <= 0)cout <<"无法计算"<< endl;else cout << p(x, n);cout << endl;system("pause");return 0;}3.27.2017int k7(int x,int n){int t=1;for(int i=1;i<=n;i++)t=t*x;return t;}int main(){int n,x;while(1){cin>>x>>n ;if(n==0)break;cout <<"k7="<<k7(x,n);}system("pause");return 0;}编写一递归函数,计算1+2+3+4+…+n。

n为正整数#include<iostream>using namespace std;int f(int n){if (n == 1)return 1;else return (n + f(n - 1));}int main(){int m, n;cout << "n=";cin >> n;n=abs(n);cout << f(n);system("pause");return 0;}10. 编写一递归函数,计算n!#include<iostream>using namespace std;int j(int n){if (n >= 0){if (n == 1 || n == 0)return 1;if (n > 1)return (n*j(n - 1));}}int main(){int m, n;cout << "n=";cin >> n;n=abs(n);cout << j(n);system("pause");return 0;}11.编写一递归函数 void Inverse(char ch[])将字符串ch逆序输出。

12.编写一递归函数 void Inver_Out(int a[],int n)将数组a中的数据逆序输出。

13. 编写一递归函数void DtoP(int n,int p),实现将十进制数n 转换为p进制数并输出。

14.使用递归调用方法将一个n位整数转换成字符串。

最新文件仅供参考已改成word文本。

方便更改。

相关文档
最新文档