1、算法实例解析法:数列问题* 用循环结构实现y=xn(n=0)(x为整数),写出流程图。N=inputbox(“”)X=inputbox(“”)Y=1If n=0 thenI=1Do while i=n Y=y*x I=i+1LoopPrint yelseprint “error”endif*s=1+3+5+7+n,(1) 求前20项的和(2)求当累加到第几项时,s的值刚好超过100?(3) 求第30项的值(4)求累加到第几项时,s的值刚好不超过300?(1) I=1 S=0 Do while i=20 S=s+(2*i-1) I=i+1 Loop Print s(2)I=1 S=0 Do wh
2、ile s=100 S=s+(2*i-1) I=i+1 Loop Print i-1(3)I=1 S=0 Do while i=300 Print i-1*求 1!+2!+3!+4!+20!方法1:S=1For i=2 to 20 T=1 for j=2 to it=t*j next j s=s+tnext iprint s方法2:N=inputbox(“”)S=0T=1A=1Do while a=n T=t*a S=s+t A=a+1LoopPrint s*求斐波纳奇数列的第n项N=inputbox(“”)If n3 then Print 1Else A=1:b=1:c=2:k=3 If n
3、=3 thenPrint 2elseDo while k=nA=bB=cC=a+bK=k+1 Loop Print c endifendif*计算圆周率N=inputbox(“”)I=1:s=1:x=2:y=1Do while i=n S=s*(x/y) I=i+1 If I mod 20 then X=x+2Else Y=y+2EndifLoopPrint s*2*求a,b(ab)两数的最大公约数和最小公倍数A=inputbox(“”)B=inputbox(“”)X=aY=bDo R=a mod b A=b B=rLoop until b=0Print “最大公约数是”;aS=(x/a)*(
4、y/a)*aPrint “最小公倍数是”;s枚举算法*孙子算经鸡兔同笼问题:有35个头,94只脚,问鸡兔各有几只?X+y=352x+4y=94X=1Do while x=35 If 2*x+(35-x)*4=94 then Print x,35-x EndifX=x+1Loop*涂抹单据1:一张单据上有一个5位数的编号,万位数是1,十位数是4,个位数是7,千位数和百位数已经模糊不清,只知道该5位数是57或67的倍数,找出所有满足这些条件的5位数并输出。1*47For j = 0 To 99 n = 10047 + j * 1000 If n Mod 57 = 0 Or n Mod 67 = 0
5、 Then Print n End IfNext j*涂抹单据2:一张单据上有一个5位数的编号,万位数是1,百位数是4,个位数是7,千位数和十位数已经模糊不清,只知道该5位数是57或67的倍数,找出所有满足这些条件的5位数并输出。1*4*7 (双重循环)For i= 0 To 9 For j=0 to 9n = 10407 +i * 1000+j*10 If n Mod 57 = 0 Or n Mod 67 = 0 Then Print n End If Next jNext i*现要为班级同学购买奖品,有一张面值100元的文具购物券,需购买笔记本(10元/本)和文具盒(15元/套)。该购物券
6、必须一次性全部用完(不找零不贴钱)。请列出所有可能的购买方案。(可以全都购买笔记本或文具盒) for x=1 to 10 y=int(100-10*x)/15 print x,y next x*百鸡百钱问题:已知公鸡每只3元,母鸡每只5元,每3只小鸡1元。用100元钱买100只鸡,问每种鸡应各买多少?Dim a As Integer, b As Integer ,c As Integera=0b=0c=0For a=0 to 33For b=0 to 20For c=0 to 100 if a+b+c=100 and a*3+b*5+1/3*c=100 thenPrint a;b;cend i
7、fNext cNext bNext a*求1000以内的素数For i = 2 To 1000 f = 0 j = 2 For j = 2 To i - 1 If i Mod j = 0 Then f = 1 End If j = j + 1 Next j If f = 0 Then Print i End IfNext i*判断一个输入的数是否为素数(此题不是枚举)a=inputbox(“”)if a=1 then print “no”else f=0for i=2 to a-1 if a mod i=0 then f=1 endifnext iif f=0 then print “yes”
8、else print “no”endifendif *包装600个变形金刚,要求:1)包装的规格分别是:小盒每盒12个,大盒每盒15个;2)每种规格的盒数都不能为0For x=1 to 50 For y=1 to 50 If 12*x+15*y=600 then I=x J=y Print I,j endif Next yNext x排序算法*输入10个数,将这10个数从小到大排序(冒泡排序)Dim d(1 to 10) as single , i As Integer, j As Integer, k As Integeri = 1Do While i = 10 d(i) = InputBo
9、x() i = i + 1Loopi = 1n=10Do While i i If d(j) d(j - 1) Then k = d(j): d(j) = d(j - 1): d(j - 1) = k End If j = j - 1Loopi = i + 1Loopi = 1Do While i = 10 Print d(i) i = i + 1Loop查找算法*顺序查找10个数中key等于48的位置,如找到,输出数组下标18,25,12,34,13,14,48,49,56,67Dim d(1 To 10) As Single, i As Integer, j As Integer, key
10、 As Single, m As Integer, r As Integeri = 1Do While i = 10 d(i) = InputBox() i = i + 1Loopi = 1r=0key=inputbox(“请输入key”)Do While i =10 and r=0 If key=d(i) then r=i endif i=i+1Loopif r0 then print r,d(r)else print ”did not find”endif*对分查找10个数中key等于48的位置,如找到,输出数组下标12,13,14,18,25,34,48,49,56,67Dim d(1
11、To 10) As Single, i As Integer, j As Integer, key As Single, m As Integer, r As Integeri = 1Do While i = 10 d(i) = InputBox() i = i + 1Loopi = 1j=10r=0key=inputbox(“请输入key”)Do While i = j and r=0 m=int(i+j)/2) If key=d(m) then r=m endif If key d(m) Then j=m-1 else i=m+1 endifLoopif r0 then print r,d(r)else print ”did not find”endif递推算法(考试不需要)*一个球从100米高度自由下落,落地后反弹回到原高度的一半处,再落下,又反弹回到第2次下落时高度的一半,以后每次都反弹到上次下落的高度一半处。求该球在第10次落地时,共经过了多少米?第10次反弹到多高?S=100X=100I=1Do while i=0.01 X=x*(1-0.2) I=i+1LoopPrint i-1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1