算法练习题分章节带标准答案

合集下载

算法练习题及答案

算法练习题及答案

算法练习题及答案算法练习题及答案随着计算机科学的发展,算法成为了计算机科学的核心内容之一。

算法是一种解决问题的方法和步骤,它可以将复杂的问题简化为一系列简单的操作。

为了提高算法设计和分析的能力,许多学生和程序员经常进行算法练习。

在这篇文章中,我将给出一些常见的算法练习题及其答案,希望能对读者有所帮助。

1. 反转字符串题目:给定一个字符串,将其反转并返回。

解答:可以使用两个指针,一个指向字符串的开头,一个指向字符串的末尾。

然后交换两个指针指向的字符,然后分别向中间靠拢,直到两个指针相遇。

2. 判断回文数题目:给定一个整数,判断它是否是回文数。

回文数是指正序和倒序读都一样的整数。

解答:可以将整数转换为字符串,然后使用反转字符串的方法判断是否相等。

另一种方法是将整数反转后与原来的整数进行比较。

3. 寻找两个有序数组的中位数题目:给定两个有序数组,找出这两个数组合并后的中位数。

要求时间复杂度为O(log(m+n))。

解答:可以使用二分查找的思想。

首先将两个数组合并成一个有序数组,然后找到中位数的位置。

如果数组长度为奇数,中位数就是中间的元素;如果数组长度为偶数,中位数就是中间两个元素的平均值。

4. 搜索旋转排序数组题目:给定一个按照升序排列的整数数组,经过旋转后的数组,搜索一个给定的目标值。

如果目标值存在于数组中,则返回它的索引,否则返回-1。

解答:可以使用二分查找的思想。

首先找到数组的中间元素,然后判断中间元素与目标值的关系。

如果中间元素等于目标值,直接返回索引;如果中间元素小于目标值,说明目标值在右半部分,继续在右半部分进行二分查找;如果中间元素大于目标值,说明目标值在左半部分,继续在左半部分进行二分查找。

5. 最长公共前缀题目:给定一个字符串数组,找到这些字符串的最长公共前缀。

解答:可以将第一个字符串作为初始的最长公共前缀,然后逐个比较后面的字符串与最长公共前缀的相同部分。

如果相同部分为空,则返回空;如果相同部分不为空,则更新最长公共前缀。

算法初步练习题及答案(ABC组)

算法初步练习题及答案(ABC组)

1a = 3b = a a b =+ b a b =- PRINT a ,bIF 10a < THEN 2y a =*else y a a =*第一章:算法初步[基础训练A 组] 一、选择题1.下面对算法描述正确的一项是:( )A .算法只能用自然语言来描述B .算法只能用图形方式来表示C .同一问题可以有不同的算法D .同一问题的算法不同,结果必然不同 2.用二分法求方程022=-x 的近似根的算法中要用哪种算法结构( )A .顺序结构B .条件结构C .循环结构D .以上都用 3.将两个数8,17a b ==交换,使17,8a b ==,下面语句正确一组是 ( )4.计算机执行下面的程序段后,输出的结果是( )A .1,3B .4,1C .0,0D .6,0 5.当3=a 时,下面的程序段输出的结果是( )A .9B .3C .10D .6二、填空题1.把求 2按从大到小进行排序时,经过第一趟排序后得到的新数列为 。

3.用“秦九韶算法”计算多项式12345)(2345+++++=x x x x x x f ,当x=2时的值的过程中,要经过 次乘法运算和 次加法运算。

4.以下属于基本算法语句的是 。

① INPUT 语句;②PRINT 语句;③IF-THEN 语句;④DO 语句;⑤END 语句; ⑥WHILE 语句;⑦END IF 语句。

5.将389化成四进位制数的末位是____________。

三、解答题1.把“五进制”数)5(1234转化为“十进制”数,再把它转化为“八进制”数。

2.用秦九韶算法求多项式x x x x x x x x f ++++++=234567234567)(当3=x 时的值。

3.编写一个程序,输入正方形的边长,输出它的对角线长和面积的值。

4.某市公用电话(市话)的收费标准为:3分钟之内(包括3分钟)收取0.30元;超过3分钟部分按0.10元/分钟加收费。

设计一个程序,根据通话时间计算话费。

(完整word版)算法及程序框图练习试题及答案解析

(完整word版)算法及程序框图练习试题及答案解析

第一章 算法初步1.1算法与程序框图 1。

1.1算法的概念1。

已知直角三角形两直角边长为a ,b ,求斜边长c 的一个算法分下列三步: ①计算22c a b =+a ,b 的值;③输出斜边长c 的值,其中正确的顺序是 【 】 A.①②③ B。

②③① C。

①③② D。

②①③2。

若()f x 在区间[],a b 内单调,且()()0f a f b <,则()f x 在区间[],a b 内 【 】 A.至多有一个根 B.至少有一个根 C 。

恰好有一个根 D 。

不确定3.已知一个学生的语文成绩为89,数学成绩为96,外语成绩为99。

求他的总分和平均成绩的一个算法为:第一步:取A =89 ,B =96 ,C =99; 第二步:____①______; 第三步:_____②_____; 第四步:输出计算的结果。

4。

写出按从小到大的顺序重新排列,,x y z 三个数值的算法.1.1.2 程序框图1.在程序框图中,算法中间要处理数据或计算,可分别写在不同的 【 】 A .处理框内 B .判断框内 C .终端框内 D .输入输出框内2.将两个数a=10,b=18交换,使a=18,b=10,下面语句正确一组是 【 】A. B. C. D 。

a=c=b b=aa=c b=a=c c=b b=a3指出下列语句的错误,并改正:(1)A=B=50(2)x=1,y=2,z=3(3)INPUT “How old are y ou” x(4)INPUT ,x(5)PRINT A+B=;C(6)PRINT Good—b y e!4.2000年我国人口为13亿,如果人口每年的自然增长率为7‰,那么多少年后我国人口将达到15亿?设计一个算法的程序。

5。

儿童乘坐火车时,若身高不超过1。

1 m,则不需买票;若身高超过1。

1 m但不超过1.4 m,则需买半票;若身高超过1。

4 m,则需买全票。

试设计一个买票的算法,并画出相应的程序框图及程序.1.2基本算法语句1.2。

算法测试题及答案

算法测试题及答案

算法测试题及答案一、选择题1. 以下哪个选项不是排序算法?A. 冒泡排序B. 选择排序C. 快速排序D. 深度优先搜索答案:D2. 在二叉树中,深度为5的节点最多有多少个?A. 16B. 32C. 64D. 31答案:D二、填空题1. 递归算法的基本思想是 _ ,即把问题分解成相同但规模更小的问题。

答案:分而治之2. 动态规划与分治法的不同之处在于动态规划会 _ ,而分治法则不会。

答案:存储子问题的解三、简答题1. 请简述什么是贪心算法,并给出一个例子。

答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。

例如,活动选择问题,给定一系列活动,每个活动都有一个开始时间和结束时间,贪心算法会按照结束时间的早晚来选择活动,从而最大化参与活动的数量。

2. 描述快速排序算法的基本思想。

答案:快速排序算法是一种分治策略,基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两个子数组,一个包含所有小于基准的元素,另一个包含所有大于基准的元素。

这个过程称为分区(partitioning)。

之后,递归地将分区过程应用到两个子数组上,直到每个子数组只有一个元素或为空。

四、计算题1. 给定一个数组 [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5],请使用快速排序算法对其进行排序,并给出排序后的数组。

答案:使用快速排序算法对给定数组进行排序后,得到的数组为 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]。

2. 假设有一个二叉搜索树,其根节点的值为10,现在要删除值为5的节点,请描述删除过程。

答案:删除二叉搜索树中的节点分为三种情况:- 情况1:要删除的节点没有子节点,直接删除该节点。

- 情况2:要删除的节点只有一个子节点,用其子节点替换该节点。

- 情况3:要删除的节点有两个子节点,找到该节点的直接前驱或直接后继,用其值替换要删除的节点,然后删除直接前驱或直接后继。

高中数学必修三《算法初步》练习题(内含答案)

高中数学必修三《算法初步》练习题(内含答案)

2、基本算法语句:①输入语句。

输入语句的格式:INPUT “提示内容”;变量②输出语句。

输出语句的一般格式:PRINT“提示内容”;表达式③赋值语句。

赋值语句的一般格式:变量=表达式④条件语句。

(1)“IF—THEN—ELSE”语句格式:IF 条件THEN语句1ELSE语句2END IF⑤循环语句。

(1)当型循环语句当型(WHILE型)语句的一般格式为:WHILE 条件循环体WEND(2)“IF—THEN”语句格式:IF 条件THEN语句END IF(2)直到型循环语句直到型(UNTIL型)语句的一般格式为:DO循环体LOOP UNTIL 条件高中数学必修三《算法初步》练习题一、选择题1.下面对算法描述正确的一项是 ( )A .算法只能用伪代码来描述B .算法只能用流程图来表示C .同一问题可以有不同的算法D .同一问题不同的算法会得到不同的结果2.程序框图中表示计算的是 ( ).A .B CD3将两个数8,17a b ==交换,使17,8a b ==,下面语句正确一组是 ( )A B C D .4. 计算机执行下面的程序段后,输出的结果是( )1a = 3b = a a b =+ b a b =-PRINT a ,b A .1,3 B .4,1 C .0,0 D .6,05.当2=x 时,下面的程序运行后输出的结果是 ( )A .3B .7C .15D .17 6. 给出以下四个问题:①输入一个数x , 输出它的相反数 ②求面积为6的正方形的周长 ③输出三个数,,a b c 中的最大数 ④求函数1,0()2,0x x f x x x -≥⎧=⎨+<⎩的函数值其中不需要用条件语句来描述其算法的有 ( ) A .1个 B .2个 C . 3个 D .4个7.图中程序运行后输出的结果为 ( ) A. 3 43 B. 43 3 C. 18- 16 D. 16 18-8. 如果右边程序执行后输出的结果是990,那么在程序中 UNTIL 后面的“条件”应为 ( )A. i>10B. i<8C. i<=9D. i<99. INPUT 语句的一般格式是( )A. INPUT “提示内容”;表达式B.“提示内容”;变量C. INPUT “提示内容”;变量D. “提示内容”;表达式10.算法共有三种逻辑结构,即顺序结构、条件结构、循环结构,下列说法正确的是( )A . 一个算法只能含有一种逻辑结构 B. 一个算法最多可以包含两种逻辑结构 C. 一个算法必须含有上述三种逻辑结构D. 一个算法可以含有上述三种逻辑结构的任意组合11. 如右图所示的程序是用来 ( )A .计算3×10的值B .计算93的值C .计算103的值D .计算12310⨯⨯⨯⋅⋅⋅⨯的值12. 把88化为五进制数是( )A. 324(5)B. 323(5)C. 233(5)D. 332(5)13.下列判断正确的是 ( )A.条件结构中必有循环结构B.循环结构中必有条件结构C.顺序结构中必有条件结构D.顺序结构中必有循环结构14. 如果执行右边的框图,输入N =5,则输出的数等于( ) A .54B.45C. 65 D.5615.某程序框图如图所示,现输入如下四个函数,其中可以输出的函数是 ( )A .2()f x x =B .1()f x x =C .()ln 26f x x x =+-D . ()f x x =二、填空题: 16.(如右图所示)程序框图能判断任意输入的正整数x 是奇数或是偶数, 其中判断框内的条件是_____________17.执行右边的程序框图, 若0.8p =,则输出的n =18. 读下面程序 , 该程序所表示的函数是19.对任意非零实数a ,b ,若a b ⊗的运算原理如图所示,则21lg1000()2-⊗=________.20.将二进制数101 101(2) 化为八进制数,结果为 .21.用“秦九韶算法”计算多项式12345)(2345+++++=x x x x x x f ,当2x =时的值的过程中,要经过 次乘法运算和 次加法运算,其中3v 的值是 .三、解答题: 22.设计算法求S = 201614121+⋅⋅⋅+++的值, 并画出程序框图.23.(1) 用辗转相除法求840与1785的最大公约数 ;(2) 用更相减损术求612 与468的最大公约数.高中数学必修三《算法初步》练习题-----参考答案一、选择题:CABBC, BADCD, CBBDD二、填空题:16.m = 0?17.4 18.10,00,10.x xy xx x+>⎧⎪==⎨⎪-+<⎩19.1 20.55(8)21.5,5,64三、解答题:22.解:(算法略)程序框图如右图所示.23. 解:(1)105;(2)36.。

算法经典例题及答案

算法经典例题及答案

算法专题训练[解析]程序框图如下.心除以2的余数/綸出•是奇数力綸出妝是佃数7II[W)ax 2 + bx + c = 0(a ^0),设计一个算法,判断方程是否有实数根.写出算法步骤, 并画出程序框图.[分析]根据3 = A = b 2 — 4ac 的符号来判断,因此要用条件结构.2[解析]算法如下:第一步,输入 a , b , c .第二步,计算 3 = b — 4ac .是否成立,若成立,输出方程有实数根;若不成立,输出方程无实数根. 程序框图如下:x <10[解析]算法如下:第三步:输出y 值.[注意]使用条件结构,有两种可能则用一个判断框,有三种可能结果则用两个判断框,依此类推.1、设计一个程序框图,使之能判断任意输入的整数x 是奇数还是偶数.2、已知关于x 的一元二次方程 第三步,判断3 >0 「一 113、根据y = S 0x >10 x = 10设计算法并画出程序框图,求输入 x 的值,输出y 的值.第一步:输入X .第二步:如果 x >10,那么y =— 11; 如果x = 10,那么y = 0;如果x <10,那么y = 4;[解析](1) =|x 2-1|.2(2)画出f (x ) = |x - 1|的草图如下图.由图象的对称性知:要使 f (X 1) = f (X 2)且|X 1|<| X 2|,需—1<X 1<1,同时 2>X 2>1或一2w X 2<-1, ••• X 1的取值范围是{x | - 1<x <1}, X 2的取值范围是{x |1<x w ,2或一x <- 1}. 5、设计一个算法,找出区间[1,1000]内的能被7整除的整数,画出程序框图.[解析]第一步,取k = 1. 第二步,判断k w 1000是否成立,若不成立,则执行第五步. 第三步,若k 除以7的余数为0,则输出k . 第四步,将k 的值增加1,返回执行第二步. 第五步,结束. 程序框图如图.程序框图如下:(1) 如图所示是某函数 f (x )给出 x 的值时,求相应函数值 y 的程序框图.写出函数 f (x )的解析式;若输入的 X 取 X 1 禾口 X 2(| x i |<|X 2|)时,输出的y 值相同,试简要分析 x i 与X 2的取值范围. 否}y=l —y=^2-l] ----由程序框图知该程序框图执行的功能是求函数 f (x ) = |X 2- 1|的值,故f (x )的解析式为f (x )/输入*/jt=A+l~TR-n[解析]程序框图如下:7、国家法定工作日内,每周工作时间满工作量为40小时,每小时工资8元;如需要加班,则加班时间每小时工资为10元•某人在一周内工作时间为x小时,个人住房公积金、失业险等合计为10%.试画出其净得工资y 元的算法的程序框图.(注:满工作量外的工作时间为加班)[解析]由题意知,当0<x W 40 时,y = 8x(1 —10%)= 7.2 x,7.2 x 0<x< 40当x >40 时,y= [40 x 8+ (x—40) x 10]x (1 —10%)= 9x —72,「. y =9x —72 x>40 此函数为分段函数,故用条件结构表达,条件为x>40,程序框图为:6、画出求满足1 + 2 + 3 + , + n2>l06的最小正整数n的程序框图.1 =十11否(开始)It/输出血/8、相传古代印度国王舍罕要褒赏他聪明能干的宰相达依尔(国际象棋的发明者),问他需要什么,达依尔说:"国王只要在国际象棋的棋盘第一格子上放一粒麦子, 第二个格子上放两粒, 第三个格子上放四粒, 以后按此 比例每一格加一倍,一直放到第64格(国际象棋8X 8= 64格),我就感恩不尽,其他什么也不要了. ”国王想:“这有多少,还不容易! ”让人扛来一袋小麦,但不到一会儿就全用没了,再扛来一袋很快又没有了,结果全 印度的粮食用完还不够,国王很奇怪•一个国际象棋棋盘能放多少粒小麦,试用程序框图表示其算法.[分析]根据题目可知:第一个格放 1粒=2°,第二个格放2粒=21,第三个格放4粒=22,第四个格放 8粒=23,,,第六十四格放 263粒.则此题就转化为求 1+ 21+ 22+ 23+ 24+ , + 263的和的问题.我们可引入一个累加变量 S,—个计数变量i 累加64次就能算出一共有多少粒小麦.[解析]一个国际象棋棋盘一共能放9、(1)用辗转相除 法求840与1764的最大公约数.(2)用更相减损术求459与357的最大公约数.[解析](1)1746 = 840X 2+ 84 840 = 84X 10+ 0 所以 840 与 1764 的最大公约数为 84. (2)459 — 357= 102357— 102= 255 255— 102 = 153 153 — 102= 51 102 — 51 = 51所以459与357的最大公约数为51.10、 用秦九韶算法求多项式 f (x ) = x 6— 5x 5 + 6x 4 + x 2+ 0.3 x + 2当x = — 2时的值.65432[解析]•/f (x ) = x — 5x + 6x + 0 • x + x + 0.3 x + 2= ((((( x — 5)x + 6)x + 0)x + 1)x + 0.3) x + 2 •••当 x = — 2 时,V 0= 1 V 1= — 2 — 5=— 7V 2= — 7X ( — 2) + 6= 20 V 3= 20X ( — 2) + 0=— 40V 4= — 40X ( — 2) + 1= 81 V 5= 81 X ( — 2) + 0.3 =— 161.7 V 6= — 161.7 X( — 2) + 2 = 325.4• f ( — 2) = 325.4.11、 有甲、乙、丙三种溶液分别重 147 g,343 g,133 g ,现要将它们分别全部装入小瓶中,每个小瓶装入液体的质量相同,则每瓶最多装多少溶液?[解析]每个小瓶的溶液的质量应是三种溶液质量147,343,133的公约数,最大质量即是其最大公约数. 先求 147 与 343 的最大公约数: 343 — 147= 196, 196 — 147 = 49, 147 — 49 = 98. 98 — 49= 49.所以147与343的最大公约数是49.再求 49 与 133 的最大公约数:133— 49= 84, 84 — 39= 35, 49 — 35= 14 , 35 — 14 = 21, 21 — 14 = 7, 14— 7= 7,所以49与133的最大公约数为7,所以147,343,133的最大公约数为7.即每瓶最多装7 g 溶液.1+ 21+ 22+ 23+ 24 + , + 263粒小麦•程序框图如图所示.*常十时1/钿 12/£=OS=O12、已知175(8)= 120+ r,求正整数r.2 10[解析]•/ 175(8)= 1X8 + 7X8 + 5X8 = 125 ,二125= 120+ r. /• r = 5,即所求正整数r 为 5.13、已知44(k = 36,把67(k转化为十进制数.10 10[解析]由题意得36= 4X k + 4X k,贝U k= 8. 故67(k)= 67(8)= 6X8 + 7X8 = 55.14、把八进制数2011(8)化为五进制数.[分析]八进制数T十进制数-五进制数3 2 10[解析]2011(8)= 2X8 + 0X8 + 1 X8 + 1 X8 = 1 024 + 0 + 8+ 1 = 1 033.5^ 1033••• 2011(8)= 13113(5).[点评]把一个非十进制数转化为另一个非十进制数,通常是把这个数先转化为十进制数,然后把十进制数再转化为另一个非十进制数.15、若10y1 (2)= x02(®,求数字x, y的值及与此两数等值的十进制数.[分析]由二进制及三进制可知,y € {0,1} , x€ {1,2},将二进制数和三进制数都转化为十进制数,再由两数相等及x、y的取值范围可得出x、y的值.[解析]•/ 10y1 (2)= x02 ⑶,• 1 X 2 3+ 0X 2 2+ y X 2+ 1 = x X32+ 0X 3+ 2,将上式整理得9x - 2y= 7, 由进位制的性质知,.来源:学+科+网Z+X+X+X€ {1,2} , y€ {0,1},当y= 0 时,x= 9(舍),当y= 1 时,x= 1.• x = y= 1,已知数为102 (3) = 1011 (2),与它们相等的十进制数为1X32+ 0X 3+ 2 = 11.。

算法初步练习题附详细答案

算法初步练习题附详细答案

算法初步练习题A . 14B . 202•阅读图2所示的程序框图,运行相应的程序,输出的结果是A . 1B. 23 .阅读右图所示的程序框图,运行相应的程序,输出的结果是A . 2B . 44.某程序框图如图所示,该程序运行后输出的k 的值是A. 4 B . 5 C . 6 D . 7 5.执行右面的程序框图,输出的S 是r 开始]|s =2, n=1k =0, S = 0|n =2n 输出n [结束]S =2是否|s =S+2S /输出k /11|k =k +1 1[结束]4题开始一、选择题:1.阅读下面的程序框图,则输出的 S =C . 30C. 3D. 4・2 [结束]i =i +11否[开始I|s =0:i =1LS =S+i 2I >4?是/输出s /2题A . -378B . 378C . -4186•如图的程序框图表示的算法的功能是A .计算小于100的奇数的连乘积 B. 计算从1开始的连续奇数的连乘积C. 从1开始的连续奇数的连乘积,当乘积大于 100时,计算奇数的个数 D .计算1X 3X 5X …X n 时00时的最小的n 值.7 •右图是把二进制数11111(2)化为十进制数的一个程序框图,判断框内应填入的&某程序框图如图所示,则该程序运行后输出的B 等于A . 15B . 29C . 31 D. 63D. i <55题条件是C. H>5输入x=-2,h=0.5,那么输出的各个数的和等于收入记为 正数,支出记为负数。

该店用右边的程序框图计算月总收入 S 和月 净盈利V ,那么在图中空白的判断框和处理框中, 应分别填入下列四个选项中 的12. 某流程如右上图所示,现输入如下四个函数,则可以输出的函数是9.如果执行右边的程序框图,C. 410.某店一个月的收入和支出总共记录了 N 个数据a,, a 2,…,a N ,其中A . A>0,V =S -TB . Ac0,V =S-TC . A A 0,V=S +TD . A<0,V =S+T11.如图1所示, 是关于闰年的流程,则以下年份是闰年的为A . 1996年B . 1998年C . 20XX 年D . 2100年11题4ri£y*/岫出T 爭韵園砥/ /#出『是阖年//輸忙/A . f (X )=x2B . f (X )= 115.下面的程序框图表示的算法的结果是 16二、填空题:13. 程序框图(即算法流程图)如图所示,其输出结果是 14. 执行右边的程序框图,输出的T= _________ .XC . f (X )=1 n X + 2x-6D . f (x )=sinX13题卓15题16.阅读右上面的流程图,若输入a=6,b=1,则输出的结果是仃右面的程序框图,如果输入三个实数 a ,b ,c ,要求输出这 三个数中最大的数,那么在空白的判断框中,应该填入下面四个选项中的① c>x ② x>c ③ C . c>b ④ b>c开始/X 输入 a,b ,c ^h = a |三、解答题:/输出a / [结束]a = 2a +1否a >100?是18.已知数列{a n}的各项均为正数,观察程序框图,若k=5,k =10时,分别有S =◎和S =—11 21(1)试求数列{a n}的通项;(2)令b n =2a n,求b1 +b2 +... + b m 的值.开始/输入[k'd /[S =0, M =0,i =否i兰k是= aj + d I /输出s/jMai 十a i[结束]|S =S +M Ik =k +1|参考答案1.C【解读与点评】当i =1时,S=1;当i=2时,S=5;循环下去,当i=3时,S=14;当i=4时,S=30;本试题考查了程序框图的运用.2.D【解读与点评】本题考查是算法的重新框图与算法的语句识别.易错点是不懂得运行顺序.当n =1,S =2代入程序中运行第一次是S = —1,然后赋值此时n = 2 ;返回运行第二次可得S =十冷,然后赋值山;再返回运行第三次可得1^—=2,然后赋值n =4,判断可知此时S=2,故输出n=4.故选D. 1」23.C【解读与点评】本题考查是算法的重新框图与算法的语句识别.考查学生运算求解能力.本题的易错点是要注意是先赋值再输出.当n =1,S =2代入程序中运行第一次是S = -1,然后赋值此时n = 2 ;返回运1 1行第二次可得S=寸=2,然后赋值n =4;再返回运行第三次可得1^—=2,然后赋值n=8,判断可知此时S=2,故输出n = 8 . 1」24. A.【解读与点评】对于k =0,s=1,「. k =1.对于k =1,s=3「k =2,贝Uk =2 , S = 3 + 8「.k =, 3后面是k =3,s = 3 + 8 + 211,”・.k =4,不符合条件时输出的k=4 .此题是新课程新增内容,考查了程序语言的概念和基本的应用,通过对程序语言的考查,充分体现了数学程序语言中循环语言的关键.9. B.【解读与点评】循环9次,对应输出值如下表。

算法题库及答案高中生

算法题库及答案高中生

算法题库及答案高中生1. 二分查找算法- 问题描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。

- 算法步骤:- 确定数组的中间位置。

- 比较中间元素与目标值。

- 如果目标值等于中间元素,则查找成功。

- 如果目标值小于中间元素,则在左半部分继续查找。

- 如果目标值大于中间元素,则在右半部分继续查找。

- 重复以上步骤,直到找到目标值或搜索范围为空。

- 答案:二分查找的时间复杂度为O(log n),适用于已排序的数组。

2. 快速排序算法- 问题描述:快速排序是一种分治算法,用于对数组进行排序。

- 算法步骤:- 选择一个元素作为“基准”。

- 重新排列数组,使得所有比基准小的元素都在基准的左边,所有比基准大的元素都在基准的右边。

- 递归地将上述步骤应用于基准左边和右边的子数组。

- 答案:快速排序的平均时间复杂度为O(n log n),但在最坏情况下为O(n^2)。

3. 归并排序算法- 问题描述:归并排序是一种分治算法,用于对数组进行排序。

- 算法步骤:- 将数组分成两半,直到每个子数组只有一个元素。

- 将两个有序的子数组合并成一个有序数组。

- 重复以上步骤,直到整个数组有序。

- 答案:归并排序的时间复杂度为O(n log n),并且是稳定的排序算法。

4. 深度优先搜索(DFS)- 问题描述:在图或树中,深度优先搜索用于遍历所有节点。

- 算法步骤:- 从根节点开始,沿着一个分支尽可能深地搜索。

- 当无法继续深入时,回溯并沿着其他分支继续搜索。

- 答案:DFS可以用于解决路径搜索问题,如迷宫求解或图的连通性问题。

5. 广度优先搜索(BFS)- 问题描述:在图或树中,广度优先搜索用于遍历所有节点。

- 算法步骤:- 从根节点开始,逐层遍历所有节点。

- 使用队列来保持访问顺序。

- 答案:BFS常用于寻找最短路径或解决最短路径问题。

6. 动态规划算法- 问题描述:动态规划是一种解决复杂问题的方法,通常用于求解优化问题。

算法试题及答案

算法试题及答案

算法试题及答案一、选择题1. 以下哪个选项不是排序算法?A. 快速排序B. 归并排序C. 冒泡排序D. 深度优先搜索答案:D2. 在二叉树的遍历算法中,中序遍历的顺序是什么?A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:B二、填空题1. 在图论中,一个图中的顶点数为n,边数为m,那么这个图的邻接矩阵的维度是________。

答案:n×n2. 动态规划算法的核心是________。

答案:最优子结构三、简答题1. 请简述贪心算法和动态规划算法的区别。

答案:贪心算法在每一步选择局部最优解,而不考虑全局最优解;动态规划算法则是将问题分解成子问题,通过求解子问题的最优解来构建原问题的最优解。

2. 什么是分治算法?请举例说明。

答案:分治算法是一种递归算法,它将问题分解成更小的子问题,递归求解子问题,然后将子问题的解合并以得到原问题的解。

例如,快速排序就是一种分治算法,它通过选择一个基准值,将数组分成两部分,一部分比基准值小,另一部分比基准值大,然后递归地对这两部分进行快速排序。

四、编程题1. 编写一个函数,实现字符串的反转。

答案:```pythondef reverse_string(s):return s[::-1]```2. 给定一个整数数组,请编写一个函数,找出数组中第二大的数。

答案:```pythondef find_second_max(nums):first_max = second_max = float('-inf')for num in nums:if num > first_max:second_max = first_maxfirst_max = numelif num > second_max and num != first_max:second_max = numreturn second_max```。

新人教版必修3算法初步练习题及答案

新人教版必修3算法初步练习题及答案

第一章算法初步1.1算法与程序框图1.1.1算法的概念1.下面的结论正确的是【】A.一个程序的算法步骤是可逆的B.一个算法可以无止境地运算下去的C.完成一件事情的算法有且只有一种D.设计算法要本着简单方便的原则2.下面对算法描述正确的一项是【】A.算法只能用自然语言来描述B.算法只能用图形方式来表示C.同一问题可以有不同的算法D.同一问题的算法不同,结果必然不同3.下面哪个不是算法的特征【】A.抽象性B.精确性C.有穷性D.唯一性4.算法的有穷性是指【】A.算法必须包含输出B.算法中每个操作步骤都是可执行的C.算法的步骤必须有限D.以上说法均不正确5.早上从起床到出门需要洗脸刷牙(5min)、刷水壶(2min)、烧水(8min)、泡面(3min)、吃饭(10min)、听广播(8min)几个步骤,从下列选项中选最好的一种算法【】A.S1洗脸刷牙、S2刷水壶、S3烧水、S4泡面、S5吃饭、S6听广播B.S1刷水壶、S2烧水同时洗脸刷牙、S3泡面、S4吃饭、S5听广播C. S1刷水壶、S2烧水同时洗脸刷牙、S3泡面、S4吃饭同时听广播D.S1吃饭同时听广播、S2泡面;S3烧水同时洗脸刷牙;S4刷水壶6.看下面的四段话,其中不是解决问题的算法是【】A.从济南到北京旅游,先坐火车,再坐飞机抵达B.解一元一次方程的步骤是去分母、去括号、移项、合并同类项、系数化为1C.方程210x-=有两个实根D.求1+2+3+4+5的值,先计算1+2=3,再计算3+3=6,6+4=10,10+5=15,最终结果为157.写出求1+2+3+4+5+6+…+100的一个算法.可运用公式1+2+3+…+n=(1)2n n+直接计算.第一步______①_______;第二步_______②________;第三步输出计算的结果.8.写出1×2×3×4×5×6的一个算法.1.1.2 程序框图1.算法的三种基本结构是【】A. 顺序结构、模块结构、条件结构 B. 顺序结构、循环结构、模块结构C. 顺序结构、条件结构、循环结构D. 模块结构、条件结构、循环结构2.给出以下四个问题,①输入x, 输出它的相反数;②求面积为6的正方形的周长;③在三个不等实数,,a b c中,求一个数的最大数;④求函数1,0()2,0x xf xx x-≥⎧=⎨+<⎩的函数值。

算法练习题及答案

算法练习题及答案

算法练习题及答案一、排序算法1. 冒泡排序冒泡排序是一种简单但效率较低的排序算法。

它的基本思想是,重复地走访待排序的元素,依次比较相邻的两个元素,如果顺序错误就交换它们,直到整个序列有序。

实现代码如下:```pythondef bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arr```2. 快速排序快速排序是一种常用且高效的排序算法。

它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,直到序列有序。

实现代码如下:```pythondef quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[0]left = [x for x in arr[1:] if x < pivot]right = [x for x in arr[1:] if x >= pivot]return quick_sort(left) + [pivot] + quick_sort(right)```二、查找算法1. 二分查找二分查找是一种针对有序数据集合的查找算法。

它的基本思想是,在有序数据集合中,取中间元素与目标元素进行比较,如果相等则查找成功;如果不相等,则根据比较结果,选择继续在前半部分或后半部分查找,以此类推,直到找到目标元素或确定目标元素不存在。

实现代码如下:def binary_search(arr, target):low, high = 0, len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] == target:return midelif arr[mid] < target:low = mid + 1else:high = mid - 1return -1```2. 插值查找插值查找是一种自适应的查找算法,适用于数据分布比较均匀的有序数据集合。

算法练习题-分章节-带答案

算法练习题-分章节-带答案

)算法练习题-分章节-带答案算法练习题---算法概述一、选择题1、下面关于算法的描述,正确的是()A、一个算法只能有一个输入B、算法只能用框图来表示C、一个算法的执行步骤可以是无限的D、一个完整的算法,不管用什么方法来表示,都至少有一个输出结果2、一位爱好程序设计的同学,想通过程序设计解决“韩信点兵”的问题,他制定的如下工作过程中,更恰当的是()A、设计算法,编写程序,提出问题,运行程序,得到答案B、分析问题,编写程序,设计算法,运行程序,得到答案C、分析问题,设计算法,编写程序,运行程序,得到答案D、设计算法,提出问题,编写程序,运行程序,得到答案3、下面说法正确的是()A、算法+数据结构=程序B、算法就是程序C、数据结构就是程序D、算法包括数据结构4、衡量一个算法好坏的标准是()。

A、运行速度快B、占用空间少C、时间复杂度低D、代码短5、解决一个问题通常有多种方法。

若说一个算法“有效”是指( )。

A、这个算法能在一定的时间和空间资源限制内将问题解决B、这个算法能在人的反应时间内将问题解决C、这个算法比其他已知算法都更快地将问题解决D、A和C6、算法分析中,记号O表示(),记号Ω表示()。

A.渐进下界B.渐进上界C.非紧上界D.非紧下界7、以下关于渐进记号的性质是正确的有:()A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB.f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D.f(n)O(g(n))g(n)O(f(n))=⇔=8、记号O的定义正确的是()。

A. O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ f(n) ≤ cg(n) };B. O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ cg(n) ≤ f(n) };C. O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有0 ≤f(n)<cg(n) };D. O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) };9、记号Ω的定义正确的是()。

算法测试题及答案详解

算法测试题及答案详解

一、选择题:1.算法的三种基本结构是( )(A )顺序结构、条件结构、循环结构 (B )顺序结构、循环结构、模块结构 (C )顺序结构、模块结构、条件结构 (D )模块结构、条件结构、循环结构 2.将两个数a=25,b=9交换,使a=9,b=25,下面语句正确一组是 ( ) (A ) (B ) (C ) (D ) 3.下列各数中,最小的数是( )。

(A )111 111(2) (B )105(8) (C )200(6) (D )75 4.下列给变量赋值的语句正确的是( )(A )5=a (B )a +2=a (C )a =b =4 (D )a =2*a5.下面程序运行后,a ,b ,c 的值各等于 ( )a = 3b = - 5c = 8 a = b b = c c = aPRINT a, b, c END(A) –5,8,-5 (B) –5,8,3 (C) 8,–5,3 (D) 8,–5,8 6.为了在运行下面的程序之后得到输出y =16,键盘输入x 应该是( )。

Input xIf x<0 theny=(x+1)*(x+1) Elsey=(x-1)*(x-1)End ifPrint y End(A) 3或-3 (B) -5 (C) -5或5 (D) 5或-3 7.用二分法求方程的近似根,精确度为δ,用直到型循环结构的终止条件是( )。

(A )|x 1-x 2|>δ (B )|x 1-x 2|<δ (C )x 1<δ<x 2 (D )x 1=x 2=δa=b b=a t = b b = a a = t b=aa=b a = c c = b b = ai=12 s=1 DO s = s * ii = i -1LOOP UNTIL 条 件PRINT sEND (第10题)程序8.读两段程序:对甲、乙程序和输出结果判断正确的是( )(A )程序不同,结果不同 (B )程序不同,结果相同 (C )程序相同,结果不同 (D )程序相同,结果相同 9.给出下面的程序框图,那么其循环体执行的次数是 ( )(A) 500 (B) 499 (C) 1000 (D) 99810.已知有上面程序,如果程序执行后输出的结果是11880,那么在程序UNTIL 后面的“条件”应为 ( )(A) i > 9 (B) i >= 9 (C) i <= 8 (D) i < 8二、填空题:11.下列四个有关算法的说法中,正确的是 . ( 要求只填写序号 ) (1) 算法的某些步骤可以不明确或有歧义,以便使算法能解决更多问题; (2) 正确的算法执行后一定得到确定的结果;(3) 解决某类问题的算法不一定是唯一的;(4) 正确的算法一定能在有限步之内结束。

C语言算法经典习题及其答案详解

C语言算法经典习题及其答案详解

C语言算法经典习题及其答案详解C语言是一门广泛应用于计算机科学和工程领域的编程语言。

在学习C语言的过程中,算法是一个重要的部分。

通过进行算法习题的练习,不仅可以加深对C语言的理解,还可以提高编程能力。

本文将介绍一些经典的C语言算法习题,并提供详细的答案解析。

一、习题一:求两个数的和题目描述:给定两个整数,要求编写程序计算它们的和,并输出结果。

解析:这是一个非常简单的题目,只需要使用加法运算符即可完成。

示例代码如下:```#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);int sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;```二、习题二:计算阶乘题目描述:给定一个正整数n,计算n的阶乘,并输出结果。

解析:阶乘的计算需要使用循环结构。

我们可以使用for循环从1到n逐个相乘,得到n的阶乘。

示例代码如下:```#include <stdio.h>int main() {int n;printf("请输入一个正整数:");scanf("%d", &n);int factorial = 1;for (int i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘是:%d\n", n, factorial);return 0;}三、习题三:判断一个数是否为素数题目描述:给定一个正整数n,判断它是否为素数,并输出结果。

解析:素数的定义是只能被1和自身整除的数。

我们可以使用循环进行判断,若n能被2到n-1之间的任何一个数整除,则说明它不是素数;否则,它是素数。

高中简单算法练习题及讲解

高中简单算法练习题及讲解

高中简单算法练习题及讲解### 练习题一:求和算法题目:编写一个程序,计算从1加到100的和。

解题思路:1. 初始化一个变量sum,用来存储累加的结果。

2. 使用for循环从1遍历到100。

3. 在循环中,将当前的数字加到sum上。

4. 循环结束后,打印sum的值。

代码实现:```pythonsum = 0for i in range(1, 101):sum += iprint(sum)```### 练习题二:阶乘算法题目:计算一个给定正整数n的阶乘。

解题思路:1. 定义一个函数factorial,接收一个参数n。

2. 使用递归或循环计算n的阶乘。

3. 如果n为0或1,返回1。

4. 否则,返回n乘以factorial(n-1)的结果。

代码实现(递归):```pythondef factorial(n):if n == 0 or n == 1:return 1else:return n * factorial(n-1)n = 5print(factorial(n))```### 练习题三:斐波那契数列题目:打印斐波那契数列的前10个数字。

解题思路:1. 斐波那契数列的特点是每一项都是前两项的和。

2. 初始化前两个数字为0和1。

3. 使用for循环,从第三个数字开始计算,直到第10个数字。

代码实现:```pythona, b = 0, 1for _ in range(10):print(a)a, b = b, a + b```### 练习题四:最大公约数题目:给定两个正整数a和b,求它们的最大公约数。

解题思路:1. 使用辗转相除法(欧几里得算法)。

2. 计算a除以b的余数。

3. 将b赋值给a,将余数赋值给b。

4. 重复上述步骤,直到余数为0,此时b的值即为最大公约数。

代码实现:```pythondef gcd(a, b):while b != 0:a, b = b, a % breturn aa = 48b = 18print(gcd(a, b))```### 练习题五:字符串反转题目:编写一个程序,将一个字符串反转。

算法的概念练习题及答案

算法的概念练习题及答案

1-1算法的概念练习题及答案(总5页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--[当堂达标]1.我们已学过的算法有一元二次方程的求根公式、加减消元法求二元一次方程组的解、二分法求函数零点等,对算法的描述有:①对一类问题都有效;②对个别问题有效;③计算可以一步一步进行,每一步都有唯一结果;④是一种通法,只要按部就班地做,总能得到结果.以上描述正确的有( )A .1个B .2个C .3个D .4个答案:C 解析:设计的算法应该是对一类问题都有效,而不是只对个别问题有效.所以①对,②不对.由算法的确定性、有限性、顺序性易知③④都是正确的,故描述正确的有3个.2.下列所给问题中,不能设计一个算法求解的是( )A .用二分法求方程x 2-3=0的近似解(精确到B .解方程组⎩⎪⎨⎪⎧ x +y +5=0,x -y +3=0C .求半径为2的球的体积D .判断y =x 2在R 上是否具有单调性答案:D 解析:选项A ,B ,C 中的问题都可以设计算法求解,而D 项中的问题则不能设计算法求解.3.“已知直角三角形两直角边长为a ,b ,求斜边长c ”的一个算法分下列三步:①计算c =a 2+b 2;②输入直角三角形两直角边长a ,b 的值;③输出斜边长c 的值.其中正确的顺序是________.答案:②①③ 解析:根据运算顺序,易知算法顺序应是②①③.4.已知一个学生的语文成绩为89,数学成绩为96,外语成绩为99,求它的总分和平均分的一个算法如下,请将其补充完整:第一步:取A =89,B =96,C =99.第二步,_____________________________________________. 第三步,_____________________________________________. 第四步,输出计算结果.答案:计算总分D =A +B +C计算平均分E =D 35.已知函数y =⎩⎪⎨⎪⎧ -x 2-1?x ≤-1?,x 3?x >-1?,试设计一个算法,输入x 的值,求对应的函数值.解:算法如下:第一步,输入x 的值;第二步,当x ≤-1时,计算y =-x 2-1,否则执行第三步; 第三步,计算y =x 3;第四步,输出y .[课堂小结]1.算法的特点:有限性、确定性、逻辑性、不唯一性、普遍性.2.算法设计的要求:(1)写出的算法必须能够解决一类问题(如判断一个整数是否为质数,求任意一个方程的近似解等),并且能够重复使用.(2)要使算法尽量简单,步骤尽量少.(3)要保证算法正确,且算法步骤能够一步一步执行,每一步执行的操作必须确切,不能含混不清,而且在有限步后能得到结果.教材习题答案第一章算法初步1.1 算法与程序框图1.算法的概念[教材习题答案与解析][练习]1.解:第一步,输入任意正实数r.第二步,计算S=πr2.第三步,输出圆的面积S.2.解:根据因数的定义,可设计出下面的一个算法:第一步,判断n是否等于2.若n=2,则n的因数为1,n;若n>2,则执行第二步.第二步,依次从1到n检验是不是能整除n.若能整除n,则是n的因数;若不能整除n,则不是n的因数.第三步,输出n的所有因数.[易错误区] 对算法含义及特征理解不清致误[典例] 计算下列各式中S的值,能设计算法求解的是( )①S=12+14+18+…+12100;②S=12+14+18+…+12100+…;③S=12+14+18+…+12n(n≥1且n∈N*).A.①②B.①③C.②③D.①②③[答案] B[解析] 算法是用来求解一类问题的,在实际算法中n的值是具体确定的,算法会根据具体确定的n来求值计算,所以①③是正确的,而算法的步骤是有限的,即执行有限步骤后一定能解决问题,而②显然不符合有限性,所以②不正确.[常见误区]错解错因剖析选D对算法的含义不理解,不明确算法的相关特征,特别是忽略算法的有限性而误选D明确算法的含义(1)算法是为解决某一类问题而设计的一系列可操作或可计算的步骤,通过这些步骤能够有效地解决问题.(2)算法具有有限性、确定性、有序性和不唯一性的特征,在解题中要灵活应用,如本例中主要考查算法的有限性.[类题试解]给出下列说法:①从北京到上海先乘出租车到火车站,再坐高铁到上海;②解方程2x+1=0的过程是先移项再把x的系数化为1;③利用公式C=2πr计算半径为2的圆的周长为2π×2;④解不等式x2+x-1>0.其中是算法的是________.答案:①②③解析:①②给出了解决问题的方法和步骤,是算法;③利用公式计算属于算法;④没有给出解决问题的方法,不是算法.。

(完整版)算法初步练习题附详细与答案

(完整版)算法初步练习题附详细与答案

算法初步练习题一、选择题:1.阅读下面的程序框图,则输出的S =A .B .C .D .142030552.阅读图2所示的程序框图,运行相应的程序,输出的结果是A . B. C. D. 12343.阅读右图所示的程序框图,运行相应的程序,输出的结果是A . B . C . D .248164.某程序框图如图所示,该程序运行后输出的的值是k A . B. C . D .45675.执行右面的程序框图,输出的是S 3题2题1题4题A .B .C .D .378-378418-4186.如图的程序框图表示的算法的功能是A .计算小于100的奇数的连乘积B .计算从1开始的连续奇数的连乘积C .从1开始的连续奇数的连乘积,当乘积大于100时,计算奇数的个数D .计算100531≥⨯⋅⋅⋅⨯⨯⨯n 时的最小的n 值.7.右图是把二进制数)2(11111化为十进制数的一个程序框图,判断框内应填入的条件是A .B .C .D .4i >4i ≤5i >5i ≤8.某程序框图如图所示,则该程序运行后输出的等于B A . B .C .D .15293163是8题否5题6题9.如果执行右边的程序框图,输入,那么输出的各个数的和等于2,0.5x h =-=A .B .C .D .3 3.5410.某店一个月的收入和支出总共记录了个数据,,其中N 1a 2,,N a a ⋅⋅⋅ 收入记为 正数,支出记为负数。

该店用右边的程序框图计算月总收入和月S 净盈利,那么在图中空白的判断框和处理框中,应分别填入下列四个选项V 中 的A .B .0,A V S T >=-0,A V S T <=- C .D .0,A V S T >=+0,A V S T<=+11. 如图1所示,是关于闰年的流程,则 以下年份是闰年的为A .1996年B .1998年C .2010年D .2100年11题n12. 某流程如右上图所示,现输入如下四个函数,则可以输出的函数是A .B .2)(x x f =xx f 1)(=C .D .62ln )(-+=x x x f xx f sin )(=二、填空题:13.程序框图(即算法流程图)如图所示,其输出结果是_______.14.执行右边的程序框图,输出的 .T =12题13题15.下面的程序框图表示的算法的结果是 1616.阅读右上面的流程图,若输入,则输出的结果是26,1a b ==17右面的程序框图,如果输入三个实数a ,b ,c ,要求输出这三个数中最大的数,那么在空白的判断框中,应该填入下面四个选项中的①②③C .④c x>x c>c b>b c>15题三、解答题:18.已知数列{a n }的各项均为正数,观察程序框图,若时,分别有10,5==k k 2110115==S S 和(1)试求数列{a n }的通项;(2)令的值.m a n b b b b n +++= (221)参考答案1.C .【解读与点评】当时, S =1;当i =2时, S =5;循环下去,当i =3时,1=i S =14;当i =4时,S =30;本试题考查了程序框图的运用.2.D 【解读与点评】本题考查是算法的重新框图与算法的语句识别.易错点是不懂得运行顺序.当代入程序中运行第一次是,然后赋值此时;返回1,2n S ==1S =-2n =运行第二次可得,然后赋值; 再返回运行第三次可得111(1)2S ==--3n =,然后赋值,判断可知此时,故输出.故选12112S ==-4n =2S =4n =D .3.C 【解读与点评】本题考查是算法的重新框图与算法的语句识别.考查学生运算求解能力.本题的易错点是要注意是先赋值再输出.当代入程序中运行第一次是,然后赋值此时;返回1,2n S ==1S =-2n =运行第二次可得,然后赋值; 再返回运行第三次可得111(1)2S ==--4n =,然后赋值,判断可知此时,故输出. 12112S ==-8n =2S =8n =4.A .【解读与点评】对于.对于,则0,1,k s ==1k ∴=1,3,2k s k ==∴= ,后面是,不符合条件时输出2,38,3k s k ==+∴=113,382,4k s k ==++∴= 的.此题是新课程新增内容,考查了程序语言的概念和基本的应用,4k =通过对程序语言的考查,充分体现了数学程序语言中循环语言的关键.9.B .【解读与点评】循环9次,对应输出值如下表。

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

算法练习题---算法概述一、选择题1、下面关于算法的描述,正确的是()A、一个算法只能有一个输入B、算法只能用框图来表示C、一个算法的执行步骤可以是无限的D、一个完整的算法,不管用什么方法来表示,都至少有一个输出结果2、一位爱好程序设计的同学,想通过程序设计解决“韩信点兵”的问题,他制定的如下工作过程中,更恰当的是()A、设计算法,编写程序,提出问题,运行程序,得到答案B、分析问题,编写程序,设计算法,运行程序,得到答案C、分析问题,设计算法,编写程序,运行程序,得到答案D、设计算法,提出问题,编写程序,运行程序,得到答案3、下面说法正确的是()A、算法+数据结构=程序B、算法就是程序C、数据结构就是程序D、算法包括数据结构4、衡量一个算法好坏的标准是()。

A、运行速度快B、占用空间少C、时间复杂度低D、代码短5、解决一个问题通常有多种方法。

若说一个算法“有效”是指( )。

A、这个算法能在一定的时间和空间资源限制内将问题解决B、这个算法能在人的反应时间内将问题解决C、这个算法比其他已知算法都更快地将问题解决D、A和C6、算法分析中,记号O表示(),记号Ω表示()。

A.渐进下界B.渐进上界C.非紧上界D.非紧下界7、以下关于渐进记号的性质是正确的有:()A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB.f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D.f(n)O(g(n))g(n)O(f(n))=⇔=8、记号O的定义正确的是()。

A. O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤f(n) ≤cg(n) };B. O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤cg(n) ≤f(n) };C. O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有0 ≤f(n)<cg(n) };D. O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) <f(n) };9、记号Ω的定义正确的是()。

A. O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤f(n) ≤cg(n) };B.O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤cg(n) ≤f(n) };C.O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤f(n)<cg(n) };D.O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n0 >0使得对所有n≥n0有:0 ≤cg(n) < f(n) };二、填空题1、算法的性质包括输入、输出、、、有限性。

4、算法的复杂性是的度量,是评价算法优劣的重要依据。

6、计算机的资源最重要的是时间和空间资源。

因而,算法的复杂性有和之分。

7、算法复杂度依赖于三方面:、和算法本身。

8、程序是用某种程序设计语言的具体实现。

9、算法是指解决问题的或步骤的描述。

11、计算一个算法时间复杂度通常可以计算、或计算步。

16、任何可用计算机求解的问题所需的时间都与其有关。

算法练习题---递归与分治策略一、选择题10、Hanoi塔问题如下图所示。

现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。

移动圆盘时遵守Hanoi塔问题的移动规则。

由此设计出解Hanoi塔问题的递归算法正确的为:()11、二分搜索算法是利用( )实现的算法。

A 、分治策略B 、动态规划法C 、贪心法D 、回溯法 12、以下不可以使用分治法求解的是( )。

A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题 13、实现循环赛日程表利用的算法是( )。

A 、分治策略 B 、动态规划法 C 、贪心法 D 、回溯法 14、实现棋盘覆盖算法利用的算法是( )。

A 、分治法B 、动态规划法C 、贪心法D 、回溯法 15、Strassen 矩阵乘法是利用( )实现的算法。

A 、分治策略B 、动态规划法C 、贪心法D 、回溯法 16、使用分治法求解不需要满足的条件是()。

A 子问题必须是一样的 B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解 17、实现合并排序利用的算法是( )。

A 、分治策略 B 、动态规划法 C 、贪心法 D 、回溯法 18、实现大整数的乘法是利用的算法( )。

A 、贪心法 B 、动态规划法 C 、分治策略 D 、回溯法二、填空题5、分治法的基本思想是将一个规模为n 的问题分解为k 个规模较小的子问题,这些子问题互相 且与原问题相同。

10、从分治法的一般设计模式可以看出,用它设计出的程序一般是 。

14、快速排序算法是基于 的一种排序算法。

17、快速排序算法的性能取决于三、简答题3、分治法所能解决的问题一般具有的几个特征是: 答:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

4、分治法与动态规划法的异同。

答:相同点:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

不同点:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。

而用分治法求解的问题,经分解得到的子问题往往是互相独立的。

8、老板有一袋金块(共n块,n是2的幂(n>=2)),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。

假设有一台比较重量的仪器,希望用最少的比较次数找出最重的金块。

答:n≤2 ,识别出最重和最轻的金块,一次比较就足够了。

n>2,第一步,把这袋金块平分成两个小袋A和B。

第二步,分别找出在A和B中最重和最轻的金块。

设A中最重和最轻的金块分别为HA与LA,以此类推,B中最重和最轻的金块分别为HB和LB。

第三步,通过比较HA和HB,可以找到所有金块中最重的;通过比较LA和LB,可以找到所有金块中最轻的。

在第二步中,若n>2,则递归地应用分而治之方法。

9、Tom很顽皮。

一天,他把假币投到储钱罐里。

之后,他担心爸爸揍它,想从N个钱币里找出那个假币。

他知道假币的重量比其他钱币轻,但不知道如何找到它,于是禁不住哭了。

也许你能帮他。

请描述一个通过使用天平找到假币的算法,并分析你算法的运行时间。

11、对下面的递归算法,写出调用f(4)的执行结果。

void f(int k){ if( k>0 ){ printf("%d\n ",k);f(k-1);f(k-1);}}四、算法填空5.快速排序void QuickSort (int a[], int p, int r){ if (p<r){ int q=Partition(a,p,r);; //对左半段排序; //对右半段排序}}6.排列问题void perm(int list[], int k, int m ){ //产生[list[k:m]的所有排列if( ){ //只剩下一个元素for (int i=0;i<=m;i++) cout<<list[i];cout<<endl;}else //还有多个元素待排列,递归产生排列for ( ){ swap(list[k],list[i]);;swap(list[k],list[i]);}}五、算法题1. 给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x,返回其在数组中的位置,如果未找到返回-1。

写出二分搜索的算法,并分析其时间复杂度。

template<class Type>int BinarySearch(Type a[], const Type& x, int n){//在a[0:n]中搜索x,找到x时返回其在数组中的位置,否则返回-1Int left=0; int right=n-1;While (left<=right){ int middle=(left+right)/2;if (x==a[middle]) return middle;if (x>a[middle]) left=middle+1;else right=middle-1;}Return -1;}时间复杂性为O(logn)2. 利用分治算法写出合并排序的算法,并分析其时间复杂度void MergeSort(Type a[], int left, int right){ if (left<right) //至少有2个元素{ int i=(left+right)/2; //取中点mergeSort(a, left, i);mergeSort(a, i+1, right);merge(a, b, left, i, right); //合并到数组bcopy(a, b, left, right); //复制回数组a}}算法在最坏情况下的时间复杂度为O(nlogn)。

算法练习题---动态规划一、选择题19、下列不是动态规划算法基本步骤的是()。

A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解20、最长公共子序列算法利用的算法是()。

A、分支界限法B、动态规划法C、贪心法D、回溯法21、动态规划算法的基本要素为()A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质 D. 预排序与递归调用22、矩阵连乘问题的算法可由()设计实现。

A、分支界限算法B、动态规划算法C、贪心算法 D.分治法23、下列算法中通常以自底向上的方式求解最优解的是()。

A、备忘录法B、动态规划法C、贪心法D、回溯法24、应用Johnson法则的流水作业调度采用的算法是()A. 贪心算法B. 分支限界法C.分治法D. 动态规划算法25、下列不是动态规划算法基本步骤的是()。

题目不好A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解二、填空题2、动态规划算法的基本思想就将待求问题、先求解子问题,然后从这些子问题的解得到原问题的解。

3、设计动态规划算法的4个步骤:(1)_,并刻画其结构特征。

相关文档
最新文档