i=1s=0WHILEi=4s=s*x+1i=i+1WENDPRINTsEND算法初步检测题一、选择题1.用“辗转相除法”求得459和357的最大公约数是()A.3B.9C.17D.51答案:.D解析:4593571102,357102351,10251251是102和51的最大公约数,也就是459和357的最大公约数2.当2x时,下面的程序段结果是()A.3B.7C.15D.17答案:CA见课本赋值语句相关部分0211,1213,3217,721153.利用“直接插入排序法”给8,1,2,3,5,7按从大到小的顺序排序,当插入第四个数3时,实际是插入哪两个数之间()A.8与1B.8与2C.5与2D.5与1答案:B解析先比较8与1,得8,1;把2插入到8,1,得8,2,1;把3插入到8,2,1,得8,3,2,1;4.对赋值语句的描述正确的是()①可以给变量提供初值②将表达式的值赋给变量③可以给一个变量重复赋值④不能给同一变量重复赋值A.①②③B.①②C.②③④D.①②④答案:A解析见课本赋值语句相关部分5.在repeat语句的一般形式中有“untilA”,其中A是()A.循环变量B.循环体C.终止条件D.终止条件为真答案:D解析Until标志着直到型循环,直到终止条件成就为止6.用冒泡排序法从小到大排列数据13,5,9,10,7,4需要经过()趟排序才能完成。A.4B.5C.6D.7答案:B解析经过第一趟得5,9,10,7,4,13;经过第二趟得5,9,7,4,10,13;经过第三趟得5,7,4,9,10,13;经过第四趟得5,4,7,9,10,13;经过第五趟得4,5,7,9,10,13;二、填空题1.根据条件把流程图补充完整,求11000内所有奇数的和;(1)处填(2)处填答案:(1)ssi(2)2ii2.图中所示的是一个算法的流程图,已知31a,输出的7b,则2a的值是____________。开始i:=1,S:=0i1000(1)(2)输出S结束否是答案:11解析:1227,112aaa3.下列各数)9(85、)6(210、)4(1000、)2(111111中最小的数是____________。答案:)2(111111解析:(9)8589577、2(6)2102616078、3(4)10001464、5432(2)11111112121212121634.右图给出的是计算201614121的值的一个流程图,其中判断框内应填入的条件是____________。答案:10i5.用直接插入排序时对:7,1,3,12,8,4,9,10进行从小到大排序时,第四步得到的一组数为:___________________________________。答案:1,3,7,8,12,4,9,10三、解答题1.以下是计算1234...100程序框图,请写出对应的程序。是否开始s:=0i:=1iss21:i:=i+1输出s结束解析:i=1sum=0WHILEi=100sum=sum+ii=i+1WENDPRINTsumEND2.函数128),12(284,840,2xxxxxy,写出求函数的函数值的程序。解析:INPUT“x=”;xIFx=0andx=4THENy=2xELSEIFx=8THENy=8ELSEy=2*(12-x)ENDIFENDIFPRINTyEND3.用辗转相除法或者更相减损术求三个数324,243,135的最大公约数.答案:27.解析:324=243×1+81243=81×3+0则324与243的最大公约数为81又135=81×1+5481=54×1+2754=27×2+0则81与135的最大公约数为27所以,三个数324、243、135的最大公约数为27.另法32424381,24381162,1628181;1358154,815427,54272727为所求。4.意大利数学家菲波拉契,在1202年出版的一书里提出了这样的一个问题:一对兔子饲养到第二个月进入成年,第三个月生一对小兔,以后每个月生一对小兔,所生小兔能全部存活并且也是第二个月成年,第三个月生一对小兔,以后每月生一对小兔.问这样下去到年底应有多少对兔子?试画出解决此问题的程序框图,并编写相应的程序.解析:根据题意可知,第一个月有1对小兔,第二个月有1对成年兔子,第三个月有两对兔子,从第三个月开始,每个月的兔子对数是前面两个月兔子对数的和,设第N个月有F对兔子,第1N个月有S对兔子,第2N个月有Q对兔子,则有FSQ,一个月后,即第1N个月时,式中变量S的新值应变第N个月兔子的对数(F的旧值),变量Q的新值应变为第1N个月兔子的对数(S的旧值),这样,用SQ求出变量F的新值就是1N个月兔子的数,依此类推,可以得到一个数序列,数序列的第12项就是年底应有兔子对数,我们可以先确定前两个月的兔子对数均为1,以此为基准,构造一个循环程序,让表示“第×个月的I从3逐次增加1,一直变化到12,最后一次循环得到的F就是所求结果.流程图和程序如下:开始输出F结束I=I+1Q=SS=FF=S+QI≤12I=3S=1Q=1NYS=1Q=1I=3WHILEI=12F=S+QQ=SS=FI=I+1WENDPRINTFEND