第二章算法题
- 格式:doc
- 大小:43.50 KB
- 文档页数:10
第二章作业评分要求:1. 每小题6分: 结果正确1分; 方法格式正确3分; 计算过程2分. 合计48分2. 给出每小题得分(注意: 写出扣分理由)3. 总得分在采分点1处正确设置.一. 证明下面等值式(真值表法, 解逻辑方程法, 等值演算法, 三种方法每种方法至少使用一次):说明证1. p ⇔(p ∧q)∨(p ∧¬q)解逻辑方程法设 p ↔((p ∧q)∨(p ∧¬q)) =0, 分两种情况讨论:⎩⎨⎧=⌝∧∨∧=0)()(1)1(q p q p p 或者 ⎩⎨⎧=⌝∧∨∧=1)()(0)2(q p q p p (1)(2)两种情况均无解, 从而, p ↔(p ∧q)∨(p ∧¬q)无成假赋值, 为永真式. 等值演算法(p ∧q)∨(p ∧¬q)⇔ p ∧(q ∨¬q)∧对∨的分配率⇔ p ∧1 排中律⇔ p 同一律 真值表法2. (p→q)∧(p→r)⇔p→(q∧r)等值演算法(p→q)∧(p→r)⇔ (¬p∨q)∧(¬p∨r)蕴含等值式⇔¬p∨(q∧r)析取对合取的分配律⇔ p→(q∧r)蕴含等值式3. ¬(p↔q)⇔(p∨q)∧¬(p∧q)等值演算法¬(p↔q)⇔¬( (p→q)∧(q→p) )等价等值式⇔¬( (¬p∨q)∧(¬q∨p) )蕴含等值式⇔¬( (¬p∧¬q)∨(p∧q) )合取对析取分配律, 矛盾律, 同一律⇔ (p∨q)∧¬(p∧q)德摩根律4. (p∧¬q)∨(¬p∧q)⇔(p∨q)∧¬(p∧q)等值演算法(p∧¬q)∨(¬p∧q)⇔ (p∨q)∧¬(p∧q)析取对合取分配律, 排中律, 同一律说明: 用真值表法和解逻辑方程法证明相当于证明为永真式.等值演算法证明时每一步后面最好注明理由以加深印象, 熟练后可以不写. 由于等值演算法证明具有较强的技巧性, 平时应注意总结心得.二. 求下列公式的主析取范式与主合取范式(等值演算法与用成真赋值或成假赋值求解都至少使用一次):1.2.3.4.1. (¬p→q)→(¬q∨p)解(¬p→q)→(¬q∨p)⇔ (p∨q)→(¬q∨p)蕴含等值式⇔ (¬p∧¬q)∨(¬q∨p)蕴含等值式, 德摩根律⇔ (¬p∧¬q)∨¬q ∨ p结合律⇔ p∨¬q吸收律, 交换律⇔ M1因此, 该式的主析取范式为m0∨m2∨m32. (¬p→q)∧(q∧r)解逻辑方程法设 (¬p→q)∧(q∧r) =1, 则¬p→q=1且 q∧r=1,解得q=1, r=1, p=0 或者 q=1, r=1, p=1, 从而所求主析取范式为 m3∨m7, 主合取范式为M0∧M1∧M2∧M4∧M5∧M6等值演算法(¬p→q)∧(q∧r)(p q)(q r) 蕴含等值式(p q r)(q r) 对分配律, 幂等律(p q r) (p q r)(p q r) 同一律, 矛盾律, 对分配律m7 m3主合取范式为M0∧M1∧M2∧M4∧M5∧M63. (p↔q)→r解逻辑方程法设 (p↔q)→r =0, 解得 p=q=1, r=0 或者 p=q=0, r=0, 从而所求主合取范式为M0∧M6, 主析取范式为m1∨m2∨m3∨m4∨m5∨m7等值演算法(p↔q)→r((p q)(q p))r 等价等值式((p q)(q p))r 蕴含等值式(p q)(q p)r 德摩根律, 蕴含等值式的否定(参见PPT)(p q r)(q p r) 对分配律, 矛盾律, 同一律M0 M6主析取范式为m1∨m2∨m3∨m4∨m5∨m74. (p→q)∧(q→r)解等值演算法(p→q)∧(q→r)(p q)(q r) 蕴含等值式(p q)(p r)(q r) 对分配律, 矛盾律, 同一律(p q r)(p q r) (p q r)(p q r)(p q r)(p q r)m1 m0 m3 m7主合取范式为M2 M4 M5 M6.解逻辑方程法设 (p q) (q r) = 1, 则p q =1 且 q r =1.前者解得: p=0, q=0; 或者 p=0, q=1; 或者 p=1, q=1.后者解得: q=0, r=0; 或者 q=0, r=1; 或者 q=1, r=1.综上可得成真赋值为 000, 001, 011, 111, 从而主析取范式为m0m1m3m7, 主合取范式为M2 M4 M5 M6.真值表法公式 (p q) (q r) 真值表如下:p q r(p q) (qr)00010011010001111000101011001111013724 M5 M6.。
一、选择题1. 算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性4.一个算法应该是()。
A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.5. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是() (1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2) 】13.以下哪个数据结构不是多型数据类型()】A.栈 B.广义表 C.有向图 D.字符串14.以下数据结构中,()是非线性数据结构】A.树 B.字符串 C.队 D.栈15. 下列数据中,()是非线性数据结构。
一、选择题1.程大位是明代著名数学家,他的《新编直指算法统宗》是中国历史上一部影响巨大的著作.它问世后不久便风行宇内,成为明清之际研习数学者必读的教材,而且传到朝鲜、日本及东南亚地区,对推动汉字文化圈的数学发展起了重要的作用.卷八中第33问是:“今有三角果一垛,底阔每面七个,问该若干?”如图是解决该问题的程序框图.执行该程序框图,求得该垛果子的总数S 为( )A .84B .56C .35D .282.运行如图所示的程序框图,若输出S 的值为129,则判断框内可填入的条件是()A .4?k <B .5?k <C .6?k <D .7?k < 3.如图是求样本数据方差S 的程序框图,则图中空白框应填入的内容为( )A .()28i S x x S +-=B .()2(1)8i i S x x S -+-=C .()2i S x x S i +-= D .()2(1)i i S x x S i -+-=4.执行如图所示的程序框图,若输出的结果为126,则判断框内的条件可以为()A .5n ≤B .6n ≤C .7n ≤D .8n ≤ 5.某程序框图如图所示,该程序运行后输出S 的值是( )A .910B .1011 C .1112 D .1116.执行如图的程序框图,若输出的6n =,则输入整数p 的最大值是( )A .15B .16C .31D .327.某程序框图如图所示,则该程序运行后输出的值是( )A .3B .3C 3D 3 8.更相减损术是出自中国古代数学专著《九章算术》的一种算法,其内容如下:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之”下图是该算法的程序框图,如果输入102a =,238b =,则输出的a 值是A.17 B.34 C.36 D.689.朱世杰是我国元代伟大的数学家,其传世名著《四元玉鉴》中用诗歌的形式记载了下面这样一个问题:我有一壶酒,携着游春走.遇务①添一倍,逢店饮斛九②.店务经四处,没了这壶酒.借问此壶中,当原多少酒?①“务”:旧指收税的关卡所在地;②“斛九”:1.9斛.下图是解决该问题的算法程序框图,若输入的x值为0,则输出的x值为()A.5740B.13380C.5732D.58932010.执行如图所示的程序框图,则输出的n值是()A .5B .7C .9D .1111.执行如下的程序框图,则输出的S 是( )A .36B .45C .36-D .45- 12.如图给出的是计算1111246102+++⋅⋅⋅+的值的一个程序框图,其中判断框中应填入的是( )A .102i >B .102i ≤C .100i >D .100i ≤二、填空题13.运行如图所示的程序框图,则输出的S 的值为________.14.执行如图所示的程序框图,输入l=2,m=3,n=5,则输出的y 的值____15.下图是某算法的程序框图,则程序运行后输出的结果是 .16.执行如图所示的程序框图,若输入的255a =,68b =,则输出的a 是__________.17.将二进制数110 101(2)转为七进制数,结果为________.18.运行右图所示程序框图,若输入值xÎ[-2,2],则输出值y 的取值范围是_____.19.如图所示的程序框图输出的值是 .20.阅读如图所示的程序框图,该程序输出的结果是__________.三、解答题21.某城市现有人口总数为100万人,如果年自然增长率为1.2%,试解答下列问题:(1)写出该城市经过x年后的人口总数关于x的函数关系式;(2)用程序流程图表示计算10年以后该城市人口总数的算法;(3)用程序流程图表示如下算法:计算大约多少年以后该城市人口将达到120万人.22.从某企业生产的某种产品中抽取20件,测量这些产品的一项质量指标值,由测量得到如图1的频率分布直方图,从左到右各组的频数依次记为1A,2A,3A,4A,5A.(1)求图1中a的值;(2)图2是统计图1中各组频数的一个算法流程图,求输出的结果S.23.一队士兵来到一条有鳄鱼的深河的左岸.只有一条小船和两个小孩,这条船只能承载两个小孩或一个士兵.试设计一个算法,将这队士兵渡到对岸.24.已知某算法的程序框图如图所示,若将输出的(x,y)值依次记为(x1,y1),(x2,y2),…,(x n,y n),…(1)若程序运行中输出的一个数组是(9,t),求t的值.(2)程序结束时,共输出(x,y)的组数为多少?(3)写出程序框图的程序语句.25.相传古代印度国王在奖赏他聪明能干的宰相达依尔(国际象棋发明者)时,问他需要什么,达依尔说:“国王只要在国际象棋棋盘的第一格子上放一粒麦子,第二格子上放二粒,第三格子上放四粒,以后按比例每一格加一倍,一直放到第64格(国际象棋棋盘格数是8×8=64),我就感恩不尽,其他什么也不要了.”国王想:“这才有多少,还不容易!”于是让人扛来一袋小麦,但不到一会儿就用完了,再来一袋很快又没有了,结果全印度的粮食用完还不够,国王很奇怪,怎么也算不清这笔账.请你设计一个程序框图表示其算法,来帮国王计算一下需要多少粒小麦. 26.程序框图如图,运行此程序,试求输出的b的值.【参考答案】***试卷处理标记,请不要删除一、选择题1.A解析:A【分析】按照程序框图运行程序,直到满足7i ≥时输出结果即可.【详解】按照程序框图运行程序,输入0i =,0n =,0S =,则1i =,1n =,1S =,不满足7i ≥,循环;2i =,3n =,4S =,不满足7i ≥,循环;3i =,6n =,10S =,不满足7i ≥,循环;4i =,10n =,20S =,不满足7i ≥,循环;5i =,15n =,35S =,不满足7i ≥,循环;6i =,21n =,56S =,不满足7i ≥,循环;7i =,28n =,84S =,满足7i ≥,输出84S =.故选:A .【点睛】本题考查根据程序框图循环结构计算输出结果的问题,属于基础题.2.C解析:C【分析】最常用的方法是列举法,即依次执行循环体中的每一步,直到循环终止,但在执行循环体时要明确循环终止的条件是什么,什么时候要终止执行循环体.【详解】0S =,1k =;110121S -=+⨯=,2k =;211225S -=+⨯=,3k =;3153217S -=+⨯=,4k =;41174249S -=+⨯=,5k =;514952129S -=+⨯=,6k =,此时输出S ,即判断框内可填入的条件是“6?k <”.故选:C .【点睛】本题考查循环结构程序框图.解决程序框图填充问题的思路(1)要明确程序框图的顺序结构、条件结构和循环结构.(2)要识别、执行程序框图,理解框图所解决的实际问题.(3)按照题目的要求完成解答并验证.3.D解析:D【分析】由题意知该程序的作用是求样本128,,,x x x 的方差,由方差公式可得. 【详解】由题意知该程序的作用是求样本128,,,x x x 的方差, 所用方法是求得每个数与x 的差的平方,再求这8个数的平均值,则图中空白框应填入的内容为: ()2(1)i i S x x S i-+-= 故选:D【点睛】本题考查了程序框图功能的理解以及样本方差的计算公式,属于一般题. 4.B解析:B【分析】根据框图,模拟程序运行即可求解.【详解】根据框图,执行程序,12,2S n ==;1222,3S n =+=;⋯12222,1i S n i =++⋯+=+,令12222126i S =++⋯+=,解得6i =,即7n =时结束程序,所以6n ≤,故选 :B【点睛】本题主要考查了程序框图,循环结构,条件分支结构,等比数列求和,属于中档题.genju 5.B解析:B【分析】模拟程序运行后,可得到输出结果,利用裂项相消法即可求出答案.【详解】模拟程序运行过程如下:0)1,0k S ,判断为否,进入循环结构, 1)110,2122S k =+==⨯,判断为否,进入循环结构, 2)11,3223S k =+=⨯,判断为否,进入循环结构, 3)111,422334S k =++=⨯⨯,判断为否,进入循环结构, …… 9)111,10223910S k =+++=⨯⨯,判断为否,进入循环结构, 10)1111,112239101011S k =++++=⨯⨯⨯,判断为是, 故输出1112231011S =+++⨯⨯111111101122310111111=-+-++-=-=, 故选:B.【点睛】 本题主要考查程序框图,考查裂项相消法,难度不大.一般遇见程序框图求输出结果时,常模拟程序运行以得到结论.6.C解析:C【分析】根据程序框图的循环结构,依次运行,算出输出值为6n =时S 的值,使得S p <不成立时p 的值即可.【详解】根据程序框图可知,1,0n S ==则11021,2S n -=+==21123,3S n -=+==31327,4S n -=+==417215,5S n -=+==5115231,6S n -=+==此时应输出6n =,需31p <不成立.因而整数p 的最大值为31故选:C【点睛】本题考查了程序框图的简单应用,根据输出结果确定判读框,属于中档题.7.D解析:D【分析】该框图的功能是计算:234562017sin sin sin sin sin sin sin 3333333πππππππ+++++++,再根据正弦函数的周期性以及特殊角的三角函数值计算可得答案.【详解】 该框图的功能是计算:234562017sin sin sin sin sin sin sin 3333333πππππππ+++++++.因为7132017sin sin sin sin3333ππππ=====28142012sin sin sin sin 3333ππππ=====, 39152013sinsin sin sin 03333ππππ=====,410162014sinsin sin sin 3333ππππ=====,511172015sin sin sin sin33332ππππ=====-, 612182016sinsin sin sin 03333ππππ=====, 所以234562017sin sin sin sin sin sin sin 3333333πππππππ+++++++3373363360336(336(3360=+⨯+⨯+⨯+⨯= 故选:D【点睛】 本题考查了程序框图的循环结构,考查了三角函数的周期性以及特殊角的三角函数值,理解程序框图的功能是解题关键,属于基础题.8.B解析:B【分析】根据程序框图进行模拟运算即可得出.【详解】根据程序框图,输入的102a =,238b =,因为a b ,且a b <,所以238102136b =-=;第二次循环,13610234b =-=;第三次循环,1023468a =-=;第四次循环,683434a =-= ,此时34a b ==,输出34a =,故选B .【点睛】本题主要考查更相减损术的理解以及程序框图的理解、识别和应用.9.C解析:C【分析】本题首先可以根据题意以及程序框图明确输入的数据为“0x =,0i =”和运算的算式为“119210x x 、1i i =+”,然后进行运算并结合条件“4i ”得出结果。
一、选择题1.执行如图所示的程序框图,则输出的S=()A.1-B.2-C.2D.1 22.运行下图所示的程序框图,如果输入的2020n=,则输出的n=()A.6 B.7 C.63 D.64 3.如图所示的程序框图输出的结果是()A.34 B.55 C.78 D.894.执行如图所示的程序框图,若输入x=9,则循环体执行的次数为()A.1次B.2次C.3次D.4次5.明代数学家程大位(1533~1606年),有感于当时筹算方法的不便,用其毕生心血写出《算法统宗》,可谓集成计算的鼻祖.如图所示的程序框图的算法思路源于其著作中的“李白沽酒”问题.执行该程序框图,若输出的y的值为2,则输入的x的值为()A .74B .5627C .2D .164816.某程序框图如图所示,其中21()g n n n =+,若输出的20192020S =,则判断框内可以填入的条件为( )A .2020?n <B .2020?nC .2020?n >D .2020?n 7.鸡兔同笼,是中国古代著名的趣味题之一.《孙子算经》中就有这样的记载:今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各有几何?设计如右图的算法来解决这个问题,则判断框中应填入的是( )A .94m >B .94m =C .35m = D .35m ≤8.如图,执行程序框图后,输出的结果是( )A .140B .204C .245D .300 9.如图给出的是计算1111246102+++⋅⋅⋅+的值的一个程序框图,其中判断框中应填入的是( )A .102i >B .102i ≤C .100i >D .100i ≤ 10.执行如图所示的程序框图,若输入的6n =,则输出S =A .514B .13C .2756D .31011.《数书九章》是我国宋代数学家秦九韶的著作,其中给出了求多项式的值的秦九韶算法,如图所示的程序框图给出了一个利用秦九韶算法求某多项式值的实例,若输入的13x =,输出的12181=y 则判断框“”中应填入的是( )A .2?k ≤B .3?k ≤C .4?k ≤D .5?≤k 12.执行如下图的程序框图,那么输出S 的值是( )A .2B .1C .12D .-1二、填空题13.执行下面的程序框图,若输入的a ,b ,k 分别为1,2,3,则输出的M =_____14.执行如图所示的程序框图若输人x 的值为3,则输出y 的值为______.15.执行如图所示的伪代码,若输出的y的值为10,则输入的x的值是________.16.我国元朝著名数学家朱世杰在《四元玉鉴》中有一首诗:“我有一壶酒,携着游春走,遇店添一倍,逢友饮一斗,店友经三处,没有壶中酒,借问此壶中,当原多少酒?”用程序x=,问一开始输入的x=______斗.遇店添一倍,逢框图表达如图所示,即最终输出的0友饮一斗,意思是碰到酒店就把壶里的酒加1倍,碰到朋友就把壶里的酒喝一斗,店友经三处,意思是每次都是遇到店后又遇到朋友,一共是3次.17.如图是一个算法流程图,则输出的S的值为______.18.如图所示的程序框图,输出S的结果是__________.19.运行如图所示的程序,输出结果为___________.20.一个算法的程序框图如图所示,则该程序运行后输出的结果是.三、解答题21.如图所示,已知底角为45°的等腰梯形ABCD,底边BC长为7 cm,腰长为22cm,当一条垂直于底边BC(垂足为F)的直线l从B点开始由左至右移动(与梯形ABCD有公共点)时,直线l把梯形分成两部分,令BF=x(0≤x≤7),左边部分的面积为y,求y与x之间的函数关系式,画出程序框图,并写出程序.22.用程序框图描述算法:已知梯形的两底边长分别为a,b,高为h,求梯形面积.23.下面程序的功能是输出1~100之间的所有偶数.程序:i=1DOm=iMOD2IF①THENPRINTiENDIF②LOOPUNTILi>100END(1)试将上面的程序补充完整;(2)改写为WHILE型循环结构程序.24.已知函数f(x)=221(0)25(0)x xx x⎧-≥⎨-<⎩每输入一个x值,都得到相应的函数值,画出程序框图并写出程序.25.分别标有1,2,3,4,5,6六个号码的小球,有一个最重,写出挑出最重球的算法,并画出程序框图.26.写出计算102+202+…+1 0002的算法程序,并画出相应的程序框图.【参考答案】***试卷处理标记,请不要删除一、选择题1.D解析:D【分析】列举出前四次循环,可知,该算法循环是以3为周期的周期循环,利用周期性可得出输出的S 的值.【详解】第一次循环,02020k =≤成立,1112S ==--,011k =+=; 第二次循环,12020k =≤成立,()11112S ==--,112k =+=; 第三次循环,22020k =≤成立,12112S ==-,213k =+=;第四次循环,32020k =≤成立,1112S ==--,314k =+=; 由上可知,该算法循环是周期循环,且周期为3,依次类推,执行最后一次循环,20202020k =≤成立,且202036731=⨯+,此时12S =, 202012021k =+=,20212020k =≤不成立,跳出循环体,输出S 的值为12. 故选:D.【点睛】本题考查利用程序框图计算输出结果,推导出循环的周期性是解题的关键,考查计算能力,属于中等题.2.A解析:A【分析】根据题中所给的框图,模拟执行程序框图,求得结果.【详解】输入2020100n =>,且不是奇数,赋值1010100n =>,且不是奇数,赋值505100n =>,且是奇数,赋值252100n =>,且不是奇数,赋值126100n =>,且不是奇数,赋值63100n =<,赋值()2log 6316n =+=,输出6.故选:A【点睛】该题考查的是有关程序框图的问题,涉及到的知识点有计算程序框图的输出结果,属于简单题目.3.B解析:B【分析】通过不断的循环赋值,得到临界值,即可得解.【详解】1,1,21,2,32,3,53,5,85,8,138,13,2113,21,3421,34,55x y z x y z x y z x y z x y z x y z x y z x y z ======================== 不满足50z ≤,输出即可,故选:B.【点睛】本题考查了程序框图循环结构求输出结果,考查了计算能力,属于中当题.4.C解析:C【分析】根据程序框图依次计算得到答案.【详解】9,5x y ==,41y x -=>;115,3x y ==,413y x -=>; 1129,39x y ==,419y x -=<;结束. 故选:C .【点睛】本题考查了程序框图的循环次数,意在考查学生的理解能力和计算能力.5.C解析:C【分析】根据程序框图依次计算得到答案.【详解】34y x =-,1i =;34916y y x =-=-,2i =;342752y y x =-=-,3i =; 3481160y y x =-=-,4i =;34243484y y x =-=-,此时不满足3i ≤,跳出循环,输出结果为243484x -,由题意2434842y x =-=,得2x =.故选:C【点睛】本题考查了程序框图的计算,意在考查学生的理解能力和计算能力.6.A解析:A【分析】因为()()2111111g n n n n n n n ===-+++,此程序框图是对函数()g n 求和,利用裂项相消法求和,可知201912020n S n ==+,可知2019满足条件进入循环,2020不满足条件没有进入循环,根据选项得到正确结果.【详解】 由2221111111112019(1111222231112020n S n n n n n n ⎫⎛⎫⎛⎫=++⋯+=-+-+⋯+-=-==⎪ ⎪ ⎪++++++⎭⎝⎭⎝⎭,解得2019n =,可得n 的值为2019时.满足判断框内的条件,当n 的值为2020时,不满足判断框内的条件,退出循环,输出S 的值,故判断框内可以填人的条件为“2020n <?”.故选A.【点睛】本题考查根据循环框图的输出结果填写判断框的内容,关键是分析出满足输出结果时的n 值,再根据选项判断结果.7.B解析:B【分析】由题意知i 为鸡的数量,j 为兔的数量,m 为足的数量,根据题意可得出判断条件.【详解】由题意可知i 为鸡的数量,j 为兔的数量,m 为足的数量,根据题意知,在程序框图中,当计算足的数量为94时,算法结束,因此,判断条件应填入“94m =”.故选B.【点睛】本题考查算法程序框图中判断条件的填写,考查分析问题和解决问题的能力,属于中等题. 8.B【分析】根据程序框图列举出算法的每一步,可得出输出结果.【详解】18n =>不成立,执行第一次循环,211b ==,011s =+=,112n =+=;28n =>不成立,执行第二次循环,224b ==,145s =+=,213n =+=; 38n =>不成立,执行第三次循环,239b ==,5914s =+=,314n =+=; 48n =>不成立,执行第四次循环,2416b ==,141630s =+=,415n =+=; 58n =>不成立,执行第五次循环,2525b ==,302555s =+=,516n =+=; 68n =>不成立,执行第六次循环,2636b ==,553691s =+=,617n =+=; 78n =>不成立,执行第七次循环,2749b ==,9149140s =+=,718=+=n ; 88n =>不成立,执行第八次循环,2864b ==,14064204s =+=,819n =+=; 98n =>成立,跳出循环体,输出s 的值为204,故选B.【点睛】本题考查程序框图运行结果的计算,一般利用算法程序框图将算法的每一步列举出来,考查计算能力,属于中等题.9.B解析:B【解析】【分析】 根据题目所求表达式1111246102+++⋅⋅⋅+中最后一个数字1102,确定填写的语句. 【详解】 由于题目所求是1111246102+++⋅⋅⋅+,最后一个数字为1102,即当102i =时,判断是,继续循环,2104i i =+=,判断否,退出程序输出S 的值,由此可知应填102i ≤.故选B.【点睛】本小题主要考查填写程序框图循环条件,属于基础题. 10.B解析:B【解析】【分析】首先确定流程图所实现的功能,然后利用裂项求和的方法即可确定输出的数值.【详解】 由流程图可知,程序输出的值为:1111023344556S =++++⨯⨯⨯⨯, 即1111111123344556S ⎛⎫⎛⎫⎛⎫⎛⎫=-+-+-+- ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎝⎭111263=-=.【点睛】本题主要考查流程图功能的识别,裂项求和的方法等知识,意在考查学生的转化能力和计算求解能力.11.C解析:C【解析】【分析】模拟程序的运行过程,即可得出输出y 的值时判断框中应填入的是什么.【详解】模拟程序的运行过程如下, 输入114,1,11333x k y ===⨯+=, 41132,1339k y ==⨯+=, 131403,19327k y ==⨯+=, 4011214,127381k y ==⨯+=, 此时不满足循环条件,输出12181=y ; 则判断框中应填入的是4?k ≤. 故选:C .【点睛】本题考查了算法与程序框图的应用问题,理解框图的功能是解题的关键,是基础题. 12.A解析:A【解析】【分析】模拟程序的运行,依次写出每次循环得到的k 和S 值,根据题意即可得到结果.【详解】程序运行如下,k=0, S =112-=﹣1, k =1,S =()111--=12; k =2,S =12112=-;k =3,S =11-2=-1… 变量S 的值以3为周期循环变化,当k=2018时,s=2,K=2019时,结束循环,输出s 的值为2.故选:A .【点睛】本题考查程序框图,是当型结构,即先判断后执行,满足条件执行循环,不满足条件,跳出循环,算法结束,解答的关键是算准周期,是基础题.二、填空题13.12【分析】由题意可知从开始判断框条件成立执行第一次循环得到一组新的的值再从开始判断框条件成立执行第一次循环得到一组新的的值当时判断条件框不成立输出此时的值即可得出答案【详解】当时执行程序框图得;当 解析:12【分析】由题意可知,从1n =开始,判断框条件成立,执行第一次循环,得到一组新的,,M a b 的值,再从2n =开始,判断框条件成立,执行第一次循环,得到一组新的,,M a b 的值,当3n =时,判断条件框不成立,输出此时M 的值,即可得出答案.【详解】当1n =时,执行程序框图得,1225,2,5M a b =+⨯===;当2n =时,执行程序框图得,22512,5,12M a b =+⨯===;当3n =时,不满足判断条件框,直接输出 12M =.故答案为12.【点睛】本题主要考查了根据程序框图写出执行结果的问题,对于这类题目,首先要弄清框图的结构和执行过程,本题为循环结构的程序框图.14.63【分析】由已知中的程序语句可知:该程序的功能是利用循环结构计算并输出变量y 的值模拟程序的运行过程分析循环中各变量值的变化情况可得答案【详解】解:模拟程序的运行可得x=3y=7不满足条件|x-y|解析:63【分析】由已知中的程序语句可知:该程序的功能是利用循环结构计算并输出变量y 的值,模拟程序的运行过程,分析循环中各变量值的变化情况,可得答案.【详解】解:模拟程序的运行,可得x=3y=7不满足条件|x-y|>31,执行循环体,x=7,y=15不满足条件|x-y|>31,执行循环体,x=15,y=31不满足条件|x-y|>31,执行循环体,x=31,y=63此时,满足条件|x-y|>31,退出循环,输出y 的值为63.故答案为63.【点睛】本题考查了程序框图的应用问题,解题时应模拟程序框图的运行过程,以便得出正确的结论,是基础题.15.3【解析】【分析】分析出算法的功能是求分段函数的值根据输出的值为10分别求出当时和当时的值即可【详解】由程序语句知:算法的功能是求的值当时解得(或不合題意舍去);当时解得舍去综上的值为3故答案为3【 解析:3【解析】【分析】分析出算法的功能是求分段函数22,31,3x x y x x <⎧=⎨+≥⎩的值,根据输出的值为10 ,分别求出当3x <时和当3x ≥时的x 值即可.【详解】由程序语句知:算法的功能是求22,31,3x x y x x <⎧=⎨+≥⎩的值, 当3x ≥时,2110y x =+=,解得3x =(或3- ,不合題意舍去);当3x <时,210y x ==,解得5x = ,舍去,综上,x 的值为3,故答案为3 .【点睛】本题主要考查条件语句以及算法的应用,属于中档题 .算法是新课标高考的一大热点,其中算法的交汇性问题已成为高考的一大亮,这类问题常常与函数、数列、不等式等交汇自然,很好地考查考生的信息处理能力及综合运用知识解决问題的能力,解决算法的交汇性问题的方:(1)读懂程序框图、明确交汇知识,(2)根据给出问题与程序框图处理问题即可. 16.【分析】模拟执行程序框图只要按照程序框图规定的运算方法逐次计算直到达到输出条件输出令即可得结果【详解】第一次输入执行循环体执行循环体执行循环体输出的值为0解得:故答案为【点睛】本题主要考查程序框图的 解析:78【分析】模拟执行程序框图,只要按照程序框图规定的运算方法逐次计算,直到达到输出条件输出87x -,令870x -=即可得结果.【详解】第一次输入x x =,1i =执行循环体,21x x =-,2i =,执行循环体,()221143x x x =--=-,3i =,执行循环体,()243187x x x =--=-,43i =>,输出87x -的值为0,解得:78x =, 故答案为78. 【点睛】本题主要考查程序框图的循环结构流程图,属于中档题. 解决程序框图问题时一定注意以下几点:(1) 不要混淆处理框和输入框;(2) 注意区分程序框图是条件分支结构还是循环结构;(3) 注意区分当型循环结构和直到型循环结构;(4) 处理循环结构的问题时一定要正确控制循环次数;(5) 要注意各个框的顺序,(6)在给出程序框图求解输出结果的试题中只要按照程序框图规定的运算方法逐次计算,直到达到输出条件即可. 17.【解析】【分析】由已知中的程序语句可知:该程序的功能是利用循环结构计算并输出变量S 的值模拟程序的运行过程分析循环中各变量值的变化情况可得答案【详解】模拟程序的运行可得满足条件执行循环体满足条件执行循 解析:7【解析】【分析】由已知中的程序语句可知:该程序的功能是利用循环结构计算并输出变量S 的值,模拟程序的运行过程,分析循环中各变量值的变化情况,可得答案.【详解】模拟程序的运行,可得1S =,1i =满足条件4i <,执行循环体,2S =,2i =满足条件4i <,执行循环体,4S =,3i =满足条件4i <,执行循环体,7S =,4i =此时,不满足条件4i <,退出循环,输出S 的值为7.故答案为7.【点睛】本题主要考查程序框图的循环结构流程图,属于中档题. 解决程序框图问题时一定注意以下几点:(1) 不要混淆处理框和输入框;(2) 注意区分程序框图是条件分支结构还是循环结构;(3) 注意区分当型循环结构和直到型循环结构;(4) 处理循环结构的问题时一定要正确控制循环次数;(5) 要注意各个框的顺序,(6)在给出程序框图求解输出结果的试题中只要按照程序框图规定的运算方法逐次计算,直到达到输出条件即可.18.【解析】阅读流程图可得该流程图计算的数值为:解析:【解析】阅读流程图可得,该流程图计算的数值为:sin 0sin 1sin 5262626S ππππππ⎛⎫⎛⎫⎛⎫=⨯++⨯+++⨯+= ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭. 19.【详解】试题分析:第一次运行条件成立;第二次运行条件成立;第三次运行条件成立;第四次运行条件不成立;输出故答案应填:1考点:算法及程序语言解析:1【详解】试题分析:第一次运行,5,4s n ==条件14s <成立;第二次运行,9,3s n ==条件14s <成立;第三次运行,12,2s n ==条件14s <成立;第四次运行,14,1s n ==条件14s <不成立;输出1n =,故答案应填:1.考点:算法及程序语言.20.4【分析】执行程序当时循环结束即可得出【详解】因为第一次进入循环后;第二次进入循环后;第三次进入循环后;第四次进入循环后循环结束所以输出的结果为4【点睛】本题主要考查了程序框图求输出的值做题时要仔细 解析:4【分析】执行程序,当4K =时循环结束,即可得出【详解】因为第一次进入循环后1,1S K ==;第二次进入循环后3,2S K ==;第三次进入循环后11,3S K ==;第四次进入循环后2059,4S K ==,循环结束,所以输出的结果为4【点睛】本题主要考查了程序框图求输出的值,做题时要仔细点,属于基础题.三、解答题21.221,02222,251(7)10,572x x y x x x x ⎧≤≤⎪⎪=-<≤⎨⎪⎪-+<<⎩,程序框图和程序见解析. 【分析】根据直线l 将梯形分割的左边部分的形状进行分类讨论,求出函数关系式,即可根据条件结构画出程序框图,并写出程序.【详解】过点A ,D 分别作AG ⊥BC ,DH ⊥BC ,垂足分别是G ,H .∵四边形ABCD 是等腰梯形,底角是45°,AB =2cm ,∴BG =AG =DH =HC =2 cm .又BC =7cm ,∴AD =GH =3cm ,当02x ≤≤时,212yx =; 当25x <≤时,22y x =-; 当57x <<时,21(7)102y x =-+, 所以221,02222,251(7)10,572x x y x x x x ⎧≤≤⎪⎪=-<≤⎨⎪⎪-+<<⎩ . 程序框图如下:程序:INPUT “x =”;xIF x >=0 AND x <=2 THENy =0.5 *x ^2ELSEIF x <=5 THENy =2*x -2ELSEy =-0.5*(x -7) ^2+10END IFEND IFPRINT yEND【点睛】本题主要考查分段函数解析式的求法、程序框图的画法以及程序语句的书写,意在考查学生分类讨论思想和算法语句的理解和书写.22.答案详见解析.【分析】分三步完成,先输入上下底和高,再计算面积S ,最后输出计算结果S.【详解】梯形面积S =12(上底+下底)×高, ∵梯形的两底边长分别为a ,b ,高为h ,∴程序算法如下:第一步:输入a ,b ,h 的值,第二步:计算S =()2a b h +, 第三步:输出S ,程序框图如下:【点睛】本题主要考查了算法及程序框图,属于中档题.23.(1)①m=0②i=i+1;(2)见解析【分析】(1)如果除以2的余数为零,则为偶数,故填0m =.i 每次增加1,故填1i i =+.(2)根据WHILE 型循环的结构,对原有程序进行改写.【详解】(1)①m=0②i=i+1(2)改写为WHILE 型循环程序如下:i=1WHILE i<=100m=I MOD 2IF m=0 THENPRINT iEND IFi=i+1WENDEND【点睛】本小题主要考查循环结构的两种编写程序的方法,属于基础题.24.见解析【分析】由条件可得函数为分段函数,这样就要进行判断,然后进行求解【详解】用变量x y ,分别表示自变量和函数值,步骤如下:第一步,输入x 的值第二步,判断x 的范围,若0x ≥,则用解析式21y x =-求函数值;否则,用225y x =-求函数值第三步,输出y 的值程序框图和程序如下.【点睛】本题考查的知识点是设计程序解决问题,由已知条件不难发现函数为分段函数,故需要进行对输入值的判定,然后再代入求解.25.见解析【解析】分析:挑最重的球需要把最重的一个球与其它都想比较,运用循环结构即可得出结果.详解:设六个小球的重量分别为ω1,ω2,…,ω6.算法如下:S1将1号球放在天平左边,2号球放在天平右边.S2比较两球的重量后,若两球一样重,则淘汰天平右边的球;若两球不一样重,则淘汰较轻的球,将较重的球放在天平左边.S3将下一号球放在天平右边比较重量,重复执行S2.S4最后留在天平左边的球是最重的球.程序框图如下图所示:点睛:本题的重点是掌握算法流程图书写的基本步骤,书写规范和方法,当需要解决的问题需要多次重复的相同的步骤时,实现算法需要通过循环结构来实现,在写算法和流程图时注意语言的表达要清晰,步骤要简洁完整.26.见解析【解析】试题分析:确定循环体为:S=S+i^2,i=i+10,再确定初始值和结束的条件即可试题程序如下:S=0;i=10;while i<=1000S=S+i^2;i=i+10;endprint(%io(2),S);程序框图如图所示:。
习题2.1什么是算法?是从日常生活中找三个例子,描述他们的算法?答:对操作的描述,即操作步骤,就是算法。
广义的说;为解决一个问题而采取的方法和步骤,就称为“算法”。
例:(略)2.2什么叫结构化的算法?为什么要提倡结构化的算法?答:由基本节构所构成的算法属于“结构化”的算法。
结构化的算法便于编写、阅读、便于修改和维护。
这就减少了程序出错的机会、提高了程序的可靠性,保证了程序的质量。
2.3试述三种基本结构的特点,你能否自己另外设计两种基本结构(要符合基本结构的特点)。
答:基本结构有以下共同点:1:只有一个入口。
图2-14-------2-17中的a点为入口。
2:只有一个出口。
图2-14-------2-17中的b点为出口。
注意,一个判断框有两个出口,但一个选择结构只有一个出口。
不能混淆。
3:结构内的每一部分都有被执行到的机会。
也就是说,对每一个框来说,都应当有一条到出口的路径通过它。
图2-20中就没有一条从入口到出口的路径通过A框。
4:结构内不存在死循环(无终止的循环)。
图2-21就是一个死循环。
需要说明的是基本结构并不一定只限于以上3中,只要有以上四种特点就可以。
人们可以自己定义之。
例:如下两图2.4用传统流程图表示求解一下问题的算法。
(1)有两个瓶子A和B,分别放醋和酱油,要求将他们互换。
#include<stdio.h>void main(){int a;int b;int c;a=10;b=5;printf("%d,%d\n",a,b);c=a;a=b;b=c;printf("%d,%d\n",a,b);}(2)一次将10个数输入,要求将将其中最大的数输出。
#include<stdio.h>void main(){int a[10];int i;int max;printf("input 10 numbers.\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");max=a[0];for(i=1;i<10;i++)if(max<a[i]) max=a[i];printf("the max is: %d\n",max) ;}(3)有3个数a b c,要求安大小顺序把他们输出。
第二章部分习题参考答案1.证明下列结论:1)在一个无向图中,如果每个顶点的度大于等于2,则该该图一定含有圈; 2)在一个有向图D 中,如果每个顶点的出度都大于等于1,则该图一定含有一个有向圈。
1)证明:设无向图最长的迹,10k V V V P =每个顶点度大于等于2,故存在与1V 相异的点'V 与0V 相邻,若,'P V ∉则得到比P 更长的迹,与P 的取法矛盾。
因此,P V ∈',是闭迹,从而存在圈.0'10V V V V证明*:设在无向图G 中,有n 个顶点,m 条边。
由题意知,m>=(2n)/2=n ,而一个含有n 个顶点的树有n-1条边。
因m>=n>n-1,故该图一定含有圈。
(定义:迹是指边不重复的途径,而顶点不重复的途径称为路。
起点和终点重合的途径称为闭途径,起点和终点重合的迹称为闭迹,顶点不重复的闭迹称为圈。
)2)证明:设有向图最长的有向迹,10k V V V P =每个顶点出度大于等于1,故存在'V 为k V 的出度连接点,使得'V V k 成为一条有向边,若,'P V ∉则得到比P 更长的有向迹,与P 矛盾,因此必有P V ∈',从而该图一定含有有向圈。
2.设D 是至少有三个顶点的连通有向图。
如果D 中包含有向的Euler 环游(即是通过D 中每条有向边恰好一次的闭迹),则D 中每一顶点的出度和入度相等。
反之,如果D 中每一顶点的出度与入度都相等,则D 一定包含有向的Euler 环游。
这两个结论是正确的吗?请说明理由。
如果G 是至少有三个顶点的无向图,则G 包含Euler 环游的条件是什么?证明:1)若图D 中包含有向Euler 环游,下证明每个顶点的入度和出度相等。
如果该有向图含有Euler 环游,那么该环游必经过每个顶点至少一次,每经过一次,必为“进”一次接着“出”一次,从而入度等于出度。
从而,对于任意顶点,不管该环游经过该顶点多少次,必有入度等于出度。
必修1 第二章算法与程序实现单元卷一、单选题1. 算法必须能在执行有限个步骤之后终止,即算法步骤不可能是无限的。
此特征就是算法的()。
A.可行性B. 输出性C.确定性D. 有穷性(正确答案)2. 利用计算机编程解决问题时,一般需要设计算法。
算法有三种基本控制结构,图 1-2 描述的是()。
A. 顺序结构B. 分支结构C. 选择结构D. 循环结构(正确答案)3. 在Python 程序中,创建列表类型数据时需要使用的符号是()A. { }B. ( )C. [ ](正确答案)D. 《》4. 在 Python 程序中,关系表达式 a > b 的运算结果是()A. 整型B. 浮点型C. 字符串D. 布尔值(正确答案)5. 如图1-1 所示的Python程序,其执行结果是()A. 35B. 8C. 53(正确答案)D. 156. 关于Python 语言,叙述正确的是()A. 加了注释的程序一般会比没有加注释的程序运行速度慢B. Python语言具有简洁、明确等特点,在数据分析和人工智能等领域都有广泛的应用(正确答案)C. Python语言内置了许多模块,其中 math 模块可用于生成随机数D. 以上说法都不对7. 在Python程序中,图1-1的语句作用是()A. 求圆形面积B. 注释(正确答案)C. 交换s和r的值D. 求圆形的周长8. 如图 1-2所示的Python程序,其运行结果是()A. 3B. 4(正确答案)C. 5D. 69. 关于Python 语言,叙述正确的是()A. 加了注释的程序一般会比没有加注释的程序运行速度慢B. Python语言具有简洁、明确等特点,在数据分析和人工智能等领域都有广泛的应用(正确答案)C. Python语言内置了许多模块,其中 math 模块可用于生成随机数D. 以上说法都不对10. 利用计算机编程解决问题时,一般需要设计算法。
算法有三种基本控制结构,图 1-2 描述的是( )[单选题]A. 顺序结构B. 分支结构(正确答案)C. 选择结构D. 循环结构11. 图1-3所示的Python程序,其运行结果是()A. 10B. 20(正确答案)C. 15D. a12. 下列语句中,会无限循环执行下去的是()A.AB.B(正确答案)C.CD.D13. 在如图1-1所示Python程序中,print语句执行的次数是()A. 执行2次B. 无限次C. 执行 1次D. 一次也不执行(正确答案)二、多选题14. 关于Python语言,叙述正确的是()A. 变量使用前必须声明B. 在循环体内使用break语句和使用continue 语句的作用相同C. 使用缩进来体现代码之间的逻辑关系(正确答案)D. 列表中元素的数据类型不要求统一(正确答案)15. 下列代码中,输出结果为1、2、3三个数字的是()A.AB.B(正确答案)C.CD.D(正确答案)16. 下列代码中,能输出“1+2+3+……+100”和的选项是()A.AB.B(正确答案)C.C(正确答案)D.D17. Python语言拥有很多模块,使用前需要导入。
《算法与程序设计》一、二章基本概念复习题答案一、单选题(每个3分,共60分)1.下列选项中,不属于计算机程序设计语言的是( C )A.汇编语言B.高级语言C.自然语言D.机器语言2. 关于算法的描述,下列选项中正确的是( B )A.算法本身就是一种程序设计语言B.算法的每一步骤必须有确切的含义C.算法的步骤可以是无穷的D.算法必须有输入3. VB程序中“dim n As Integer”这条语句的作用是( A)A.定义一个变量B.定义一个数据输入方法C.定义一个事件过程D.定义一个数据处理方法4.一个单窗体VB程序的运行界面如下图所示,下列说法正确的是:(C)(1)窗体内有1个按纽(2)窗体内有2个文本框(3)窗体内有3个标签(4)该窗体的标题(Caption)属性值是“加法计算器”A.(3) (4)B.(1)(2)C.(1)(4)D.(2) (3)5. 两个阻值分别为R1、R2的电阻并联后,电路阻值可由公式求解,下面能正确求出R的VB表达式是(A)。
A.R1*R2/(R1+R2)B.R1+R2/(R1*R2)C.(R1+R2)/(R1*R2)D.R1*R2/R1+R26. 关于算法的描述,下列选项中正确的是(D)A.算法只能用流程图来表示B.一个算法的执行步骤可以是无限的C.一个算法,当没有输入时,也没有输出D.一个算法可以没有输入7. 在VB语言中,字符串运算符“+”和“&”的作用是把两个或多个字符串连接成一个字符串。
则表达式"20"+"13"&"20+13"的运算结果是(B )。
'A. “332013”B.”201320+13”C.”201333”D.”3333”8. 下列VB程序运行时(如图所示),在文本框Text1中输入20,在文本框Text2中输入13,单击命令按钮Command1后,文本框Text3中显示的内容是(D)。
1.对单链表表示法,以下说法错误的是()A.数据域用于存储线性表的一个数据元素B. 指针域(或链域)用于存放一个指向本结点所含数据元素的直接后继所在结点的指针.C. 所有数据通过指针的链接而组织成单链表D.NULL称为空指针,它不指向任何结点只起标志作用2.线性表的静态链表存储结构与顺序存储结构相比优点是:( )(1)所有的操作算法实现简单(2)便于随机存取(3)便于插入和删除(4)便于利用零散的存储器空间3.以下说法正确的是().A.顺序存储方式的优点是存储密度大且插入/删除运算效率高B. 链表的每个结点中都恰好包含一个指针C.线性表的顺序存储结构优于链式存储结构D.顺序存储结构属于静态结构而链式结构属于动态4.从表中任一结点出发都能扫描整个表的是()。
A.静态链表B.单链表C.顺序表 D.双链表E.循环链表5.下面的叙述不正确的是()。
A. 线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关二判断题:1、线性表采用链式存储时,结点和结点内部的存储可以是不连续的。
()2、在具有头结点的链式存储结构中,头指针指向链表中的第一个数据结点。
()3、顺序存储的线性表可以随机存取。
()4、在单链表中,要方位某个结点,只要知道该结点的指针即可;因此,单链表是一种随机存取结构。
()4、在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。
()6、顺序存储结构属于静态结构,链式结构属于动态结构。
()三、算法题目:试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。
第一章 误差1 问3。
142,3。
141,722分别作为π的近似值各具有几位有效数字?分析 利用有效数字的概念可直接得出. 解 π=3。
141 592 65…记x 1=3。
142,x 2=3。
141,x 3=722。
由π- x 1=3.141 59…-3.142=-0。
000 40…知3411110||1022x π--⨯<-≤⨯ 因而x 1具有4位有效数字。
由π- x 2=3.141 59…-3。
141=—0.000 59…知2231021||1021--⨯≤-<⨯x π因而x 2具有3位有效数字.由π—722=3。
141 59 …-3.142 85…=-0。
001 26…知231021|722|1021--⨯≤-<⨯π因而x 3具有3位有效数字。
2 已知近似数x *有两位有效数字,试求其相对误差限. 分析 本题显然应利用有效数字与相对误差的关系.解 利用有效数字与相对误差的关系。
这里n=2,a 1是1到9之间的数字。
%5101211021|*||*||)(|1211*=⨯⨯≤⨯≤-=+-+-n ra x x x x ε3 已知近似数的相对误差限为0。
3%,问x *至少有几位有效数字?分析 本题利用有效数字与相对误差的关系。
解 a 1是1到9间的数字。
1112*10)1(2110)19(21102110003%3.0)(--⨯+≤⨯+⨯=⨯<=a x r ε 设x*具有n 位有效数字,令—n+1=—1,则n=2,从而x *至少具有2位有效数字.4 计算sin1.2,问要取几位有效数字才能保证相对误差限不大于0。
01%。
分析 本题应利用有效数字与相对误差的关系。
解 设取n 位有效数字,由sin1.2=0.93…,故a 1=9。
411*10%01.01021|*||*||)(-+-=≤⨯≤-=n ra x x x x ε解不等式411101021-+-≤⨯n a 知取n=4即可满足要求。
《算法设计与分析》习题第一章算法引论1、算法的定义?答:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
通俗讲,算法:就是解决问题的方法或过程。
2、算法的特征?答:1)算法有零个或多个输入;2)算法有一个或多个输出; 3)确定性;4)有穷性3、算法的描述方法有几种?答:自然语言、图形、伪代码、计算机程序设计语言4、衡量算法的优劣从哪几个方面?答:(1) 算法实现所耗费的时间(时间复杂度);(2) 算法实现所所耗费的存储空间(空间复杂度);(3) 算法应易于理解,易于编码,易于调试等等。
5、时间复杂度、空间复杂度定义?答:指的是算法在运行过程中所需要的资源(时间、空间)多少。
6、时间复杂度计算:{i=1;while(i<=n)i=i*2; }答:语句①执行次数1次,语句②③执行次数f(n), 2^f(n)<=n,则f(n) <=log2n;算法执行时间: T(n)= 2log2n +1时间复杂度:记为O(log2n) ;7.递归算法的特点?答:①每个递归函数都必须有非递归定义的初值;否则,递归函数无法计算;(递归终止条件)②递归中用较小自变量函数值来表达较大自变量函数值;(递归方程式)8、算法设计中常用的算法设计策略?答:①蛮力法;②倒推法;③循环与递归;④分治法;⑤动态规划法;⑥贪心法;⑦回溯法;⑧分治限界法9、设计算法:递归法:汉诺塔问题?兔子序列(上楼梯问题)?整数划分问题?蛮力法:百鸡百钱问题?倒推法:穿越沙漠问题?答:算法如下: (1) 递归法● 汉诺塔问题void hanoi(int n, int a, int b, int c) {if (n > 0) {hanoi(n-1, a, c, b); move(a,b);hanoi(n-1, c, b, a); } }● 兔子序列(fibonaci 数列 )递归实现:Int F(int n) {if(n<=2) return 1; elsereturn F(n-1)+ F(n-2); }● 上楼梯问题 Int F(int n) {if(n=1) return 1 if(n=2) return 2; elsereturn F(n-1)+ F(n-2); }● 整数划分问题问题描述:将正整数n 表示成一系列正整数之和,n=n1+n1+n3+…将最大加数不大于m 的划分个数,记作q(n,m)。
算法分析与设计习题第一章算法引论一、填空题:1、算法运行所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂度和空间复杂度。
2、多项式10()m m A n a n a n a =+++的上界为O(n m )。
3、算法的基本特征:输入、输出、确定性、有限性。
4、如何从两个方面评价一个算法的优劣:时间复杂度、空间复杂度。
5、计算下面算法的时间复杂度记为: O(n 3) 。
for(i=1;i<=n;i++)for(j=1;j<=n;j++){c[i][j]=0;for(k=1;k<=n;k++)c[i][j]= c[i][j]+a[i][k]*b[k][j];}6、描述算法常用的方法:自然语言、伪代码、程序设计语言、流程图、盒图、PAD 图。
7、算法设计的基本要求:正确性 和 可读性。
8、计算下面算法的时间复杂度记为: O(n 2) 。
for (i =1;i<n; i++){ y=y+1;for (j =0;j <=2n ;j++ )x ++;}9、计算机求解问题的步骤:问题分析、数学模型建立、算法设计与选择、算法表示、算法分析、算法实现、程序调试、结果整理文档编制。
10、算法是指解决问题的 方法或过程 。
二、简答题:1、按照时间复杂度从低到高排列:O( 4n 2)、O( logn)、O( 3n )、O( 20n)、O( 2)、O( n 2/3),O( n!)应该排在哪一位?答:O( 2),O( logn),O( n 2/3),O( 20n),O( 4n 2),O( 3n ),O( n!)2、什么是算法?算法的特征有哪些?答:1)算法:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
通俗讲,算法:就是解决问题的方法或过程。
2)特征:1)算法有零个或多个输入;2)算法有一个或多个输出; 3)确定性 ; 4)有穷性3、给出算法的定义?何谓算法的复杂性?计算下例在最坏情况下的时间复杂性?for(j=1;j<=n;j++) (1)for(i=1;i<=n;i++) (2) {c[i][j]=0; (3)for(k=1;k<=n;k++) (4)c[i][j]= c[i][j]+a[i][k]*b[k][j]; } (5)答:1)定义:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
《算法设计与分析》实验与复习题第一章引论习题1 写一个通用方法用于判定给定数组是否已排好序。
算法实例:Algorithm compare(a,n)、BeginJ=1;While (j<n and a[j]<=a[j+1]) do j=j+1;If j=n then return trueElseWhile (j<n and a[j]>=a[j+1]) do j=j+1;If j=n then return true else return false end ifEnd if…end习题1 写一个算法交换两个变量的值不使用第三个变量。
算法实例:x=x+y; y=x-y; x=x-y;习题1-3 已知m,n为自然数,其上限为k(由键盘输入,1<=k<=109),找出满足条件(n2-mn-m2)2=1 且使n2+m2达到最大的m、n。
?算法实例:m:=k; flag:=0;repeatn:=m;repeatl:=n*n-m*n-m*n;if (l*l=1) then flag:=1 else n:=n-1;until (flag=1) or (n=0)]if n=0 then m:=m-1until (flag=1) or (m=0);第二章 基础知识"习题2-1 求下列函数的渐进表达式:3n 2+10n ; n 2/10+2n ; 21+1/n ; log n 3; 10 log3n 。
解答: 3n 2+10n=O (n 2), n 2/10+2n =O (2n ), 21+1/n=O (1), log n 3=O (log n ),10 log3n =O (n )。
习题2-2 说明O (1)和 O (2)的区别。
&习题2-3 照渐进阶从低到高的顺序排列以下表达式:!n ,3/22,2,20,3,log ,4n n n n n 。
解答:照渐进阶从低到高的顺序为:!n 、 3n 、 24n 、23n 、20n 、log n 、2习题2-4(1) 假设某算法在输入规模为n 时的计算时间为n n T 23)(⨯=。
计算机算法复习题及答案(前三章)第一章1、什么是绝对误差?什么是相对误差?答:绝对误差等于准确值与近似值差的绝对值。
相对误差是近似数的误差与准确值的比值。
2、什么是绝对误差限?什么是相对误差限?答:绝对误差限为绝对误差的“上界”相对误差限为相对误差绝对值的“上界”3、有效数字与绝对误差限有何关系?有效数字与相对误差限有何关系?答:(绝对)若近似值的绝对误差限是某一位上的半个单位,且该位直到的第一位非零数字一共有几位。
则称近似值有n位有效数字。
(相对)设近似值=±0.···×有n位有效数字,≠0,则真相对误差限为×设近似值=±0.···×的相对误差限为×,≠0,则它有n位有效数字。
4、例1.11、例1.12、例1.15、例1.16.例1.11.设x=4.26972,那么取2位,=4.3,有效数字为2位取3位,=4.27,有效数字为3位取4位,=4.270,有效数字为4位取5位,=4.2697,有效数字为5位例1.12,若=3587.64是x的具有6位有效数字的近似值,则误差限是|-x|≤×=×若=0.0023156是x的具有5位有效数字的近似值,则误差限是|-x|≤×≤×例1.15,若=2.72来表示e的具有3位有效数字的近似值,则相对误差限是=×=×例1.16要使的近似值的相对误差限小于0.1%,要取几位有效数字?由定理1.1,≤×.由于=4.4···,已知=4,故只要取n=4,就有≤0.125×=0.1%只要对的近似值取4位有效数字,其相对误差限就小于0.1%。
此时由开方表得≈4.472 5、课本13~14页习题1、2、3、4.习题1:下列各数都是经过四舍五入得到的近似数,试指出它们是具有几位有效数字的近似数,并确定++和的误差限答:=1.1021,5位,=0.031,2位,=385.6,4位|++|-|++|≤|-|+|-|+|-|=×+×+×=0.5055 η()≈||η()+|η()|=1.1021××+0.031××=0.00055105+0.00000155=0.0005526η()≈||η()+||η() =0.001708255+0.21308256 =0.2148习题2.已测得某场地长L 的值为=110m ,宽d 的值为=80m,已知|L-|≤0.2m ,|d-|≤0.1m ,试求面积S=Ld 的绝对误差限和相对误差限。
1.4、试编写算法,求一元多项式P n(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。
注意:本题中的输入a i(i=0,1,…,n),x和n,输出为P n(x0)。
通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递。
(2)通过全局变量隐式传递。
试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出【解答】(1)通过参数表中的参数显式传递优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。
缺点:形参须与实参对应,且返回值数量有限。
(2)通过全局变量隐式传递优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗缺点:函数通用性降低,移植性差算法如下:通过全局变量隐式传递参数PolyValue(){ int i,n;float x,a[],p;printf(“\nn=”);scanf(“%f”,&n);printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<n;i++)scanf(“%f ”,&a[i]); /*执行次数:n次*/p=a[0];for(i=1;i<=n;i++){ p=p+a[i]*x; /*执行次数:n次*/x=x*x;}printf(“%f”,p);}算法的时间复杂度:T(n)=O(n)通过参数表中的参数显式传递float PolyValue(float a[ ], float x, int n){float p,s;int i;p=x;s=a[0];for(i=1;i<=n;i++){s=s+a[i]*p; /*执行次数:n次*/p=p*x;}return(p);}算法的时间复杂度:T(n)=O(n)[techer's]#include <stdio.h>#define MAXSIZE 10float pnx(float a[],float x,int n){ int j;float sum=0.0;for(j=n;j>0;j--) /*a[0]=a0,[a1]=a1,...*/sum=(sum+a[j])*x;sum=sum+a[0];return(sum);}void main(){int n,i;float a[MAXSIZE],x,result;printf("Input the value of x:\n");scanf("%f",&x);printf("\n");printf("Input The n:\n");scanf("%d",&n);printf("\n");printf("Input a0,a1,...an:");for(i=0;i<=n;i++) scanf("%f",&a[i]);printf("\n");result=pnx(a,x,n);printf("The result is:%f\n",result);}2.4 已知线性表L递增有序。
试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。
Status Insert_SqList(SqList &va,int x)//把x插入递增有序表va中{if(va.length+1>va.listsize) return ERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;return OK;}//Insert_SqList[teacher's]int InsList_Sort(SeqList *L,elemtype e){int i;if(L->last>=MAXSIZE-1) {printf("表已满无法插入!");return(0);}i=L->last;while((i>=0)&&(e<L->elem[i]))/*寻找插入位置并移动元素*/{ L->elem[i+1]=L->elem[i];i--;}L->elem[i+1]=e;/*即使L为空,处理也相同*/L->last++;return (1);}2.5 写一算法,从顺序表中删除自第i个元素开始的k个元素。
[提示]:注意检查i和k的合法性。
(集体搬迁,“新房”、“旧房”)< 方法1 > 以待移动元素下标m(“旧房号”)为中心,计算应移入位置(“新房号”):for ( m= i-1+k; m<= L->last; m++)L->elem[ m-k ] = L->elem[ m ];< 方法2 > 同时以待移动元素下标m和应移入位置j为中心:< 方法2 > 以应移入位置j为中心,计算待移动元素下标:[teacher's]int DelList_k(SeqList *L,int i,int k){ /*假定从i往后的元素个数不足k个时,仅删除其后的所有元素*/int count,j;if ((i>L->last+1)||(k<1)) return(0);count=L->last-i+1;/*计算i后的元素个数*/j=i+k-1;while(j<=L->last)/*将i+k位置以后的元素向前移动*/{ L->elem[j-k]=L->elem[j];j++;/*原算法中的count--;去掉*/}if(count>=k) L->last=L->last-k;/*改变指向尾元的位置值*/else L->last=L->last-count;/*被删元素数少于k个时*/return (1);}2.6已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。
试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink 和maxk是给定的两个参变量,它们的值为任意的整数)。
Status Delete_Between(Linklist &L,int mink,int maxk)//删除元素递增排列的链表L中值大于mink且小于maxk的所有元素{p=L;while(p->next->data<=mink) p=p->next; //p是最后一个不大于mink的元素if(p->next) //如果还有比mink更大的元素{q=p->next;while(q->data<maxk) q=q->next; //q是第一个不小于maxk的元素p->next=q;}}//Delete_Between2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., a n)逆置为(a n, a n-1,..., a1)。
(1)以一维数组作存储结构,设线性表存于a(1:arrsize)的前elenum个分量中。
(2)以单链表作存储结构。
[方法1]:在原头结点后重新头插一遍[方法2]:可设三个同步移动的指针p, q, r,将q的后继r改为p[teacher's]#include <stdio.h> //2.7.1#define MAXSIZE 10void createdata(int x[],int n){int i;if(n>=MAXSIZE) {printf("ERROR!");exit();}for(i=0;i<n;i++) x[i]=i+i;}void reverse1(int x[],int n){ int tmp,i,k;if(n>=MAXSIZE) {printf("OverFlow!");exit();}k=0;for(i=n-1;i>=n/2;i--){tmp=x[i];x[i]=x[k];x[k]=tmp;k++;}}void disparray(int x[],int n){int i;if(n>=MAXSIZE) {printf("ERROR!");exit();}for(i=0;i<n;i++) printf("%d ",x[i]);}void main(){int a[MAXSIZE];createdata(a,8);reverse1(a,8);disparray(a,8);}#include <stdio.h> //2.7.2typedef struct node{ int x;struct node *next;}snode,*Linklist;Linklist create(){ snode *head,*rear,*s;int y;head=(Linklist)malloc(sizeof(snode));rear=head;scanf("%d",&y);while(y!=-1){ s=(Linklist)malloc(sizeof(snode));s->x=y;rear->next=s;rear=s;scanf("%d",&y);}rear->next=NULL;return(head);}Linklist reverse2(snode *head){ Linklist p,q;p=head->next;head->next=NULL;while(p){ q=p;/*采用头插法,q指向待插节点,p指向下一个*/p=p->next;q->next=head->next;head->next=q;}return(head);}main(){ Linklist h,p;h=create();p=h->next;while(p){ printf("%5d",p->x);p=p->next;}h=reverse(h);printf("\n");p=h->next;while(p){ printf("%5d",p->x);p=p->next;}}2.8假设两个按元素值递增有序排列的线性表A和B,均以单链表作为存储结构,请编写算法,将A表和B表归并成一个按元素值递减有序的排列的线性表C,并要求利用原表(即A表和B表的)结点空间存放表C.[teacher's]/*ch2_8合并并逆置链表*/#include <stdio.h>typedef struct node{ int x;struct node *next;}snode,*Linklist;Linklist create(){ snode *head,*rear,*s;int y;head=(Linklist)malloc(sizeof(snode));rear=head;scanf("%d",&y);while(y!=-1){ s=(Linklist)malloc(sizeof(snode));s->x=y;rear->next=s;rear=s;scanf("%d",&y);}rear->next=NULL;return(head);}Linklist merge(snode *head1,snode *head2){ Linklist head,p,q,s;p=head1->next;/*指向A的首元节点*/q=head2->next;/*指向B的首元节点*/head=head1; /*以链表A的头节点做C的头节点*/head->next=NULL;free(head2); /*释放B的头节点*/while(p!=NULL&&q!=NULL)/*用头插法挑选元素插入*/ { if(p->x<q->x){ s=p;p=p->next;}else{s=q;q=q->next;}s->next=head->next;head->next=s;}if(p==NULL) p=q;while(p){ s=p;p=p->next;s->next=head->next;head->next=s;} return(head);}main(){ Linklist h,h1,h2,p,q;h1=create();h2=create();printf("\n******************************\n");p=h1->next;while(p) /*显示链表A的数据*/{ printf("%5d",p->x);p=p->next;}printf("\n******************************\n");q=h2->next;while(q) /*显示链表B的数据*/{ printf("%5d",q->x);q=q->next;}h=merge(h1,h2);p=h->next;printf("\n******************************\n");while(p) /*显示链表C的数据*/{printf("%5d",p->x);p=p->next;}}2.9假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。