算法实例.docx
- 文档编号:28086044
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:15
- 大小:132.12KB
算法实例.docx
《算法实例.docx》由会员分享,可在线阅读,更多相关《算法实例.docx(15页珍藏版)》请在冰豆网上搜索。
算法实例
解析法:
数列问题
*用循环结构实现y=xn(n>=0)(x为整数),写出流程图。
N=inputbox(“”)
X=inputbox(“”)
Y=1
Ifn>=0then
I=1
Dowhilei<=n
Y=y*x
I=i+1
Loop
Printy
else
print“error”
endif
*s=1+3+5+7+……+n,
(1)求前20项的和
(2)求当累加到第几项时,s的值刚好超过100?
(3)求第30项的值
(4)求累加到第几项时,s的值刚好不超过300?
(1)
I=1
S=0
Dowhilei<=20
S=s+(2*i-1)
I=i+1
Loop
Prints
(2)
I=1
S=0
Dowhiles<=100
S=s+(2*i-1)
I=i+1
Loop
Printi-1
(3)
I=1
S=0
Dowhilei<=30
T=2*i-1
S=s+t
I=i+1
Loop
Printt
(4)
I=0
S=0
do
S=s+(2*i-1)
I=i+1
Loopuntils>=300
Printi-1
*求1!
+2!
+3!
+4!
+…+20!
方法1:
S=1
Fori=2to20
T=1
forj=2toi
t=t*j
nextj
s=s+t
nexti
prints
方法2:
N=inputbox(“”)
S=0
T=1
A=1
Dowhilea<=n
T=t*a
S=s+t
A=a+1
Loop
Prints
*求斐波纳奇数列的第n项
N=inputbox(“”)
Ifn<3then
Print1
Else
A=1:
b=1:
c=2:
k=3
Ifn=3then
Print2
else
Dowhilek<=n
A=b
B=c
C=a+b
K=k+1
Loop
Printc
endif
endif
*计算圆周率
N=inputbox(“”)
I=1:
s=1:
x=2:
y=1
Dowhilei<=n
S=s*(x/y)
I=i+1
IfImod2<>0then
X=x+2
Else
Y=y+2
Endif
Loop
Prints*2
*求a,b(a>b)两数的最大公约数和最小公倍数
A=inputbox(“”)
B=inputbox(“”)
X=a
Y=b
Do
R=amodb
A=b
B=r
Loopuntilb=0
Print“最大公约数是”;a
S=(x/a)*(y/a)*a
Print“最小公倍数是”;s
枚举算法
*《孙子算经》鸡兔同笼问题:
有35个头,94只脚,问鸡兔各有几只?
X+y=35
2x+4y=94
X=1
Dowhilex<=35
If2*x+(35-x)*4=94then
Printx,35-x
Endif
X=x+1
Loop
*涂抹单据1:
一张单据上有一个5位数的编号,万位数是1,十位数是4,个位数是7,千位数和百位数已经模糊不清,只知道该5位数是57或67的倍数,找出所有满足这些条件的5位数并输出。
1**47
Forj=0To99
n=10047+j*1000
IfnMod57=0OrnMod67=0Then
Printn
EndIf
Nextj
*涂抹单据2:
一张单据上有一个5位数的编号,万位数是1,百位数是4,个位数是7,千位数和十位数已经模糊不清,只知道该5位数是57或67的倍数,找出所有满足这些条件的5位数并输出。
1*4*7(双重循环)
Fori=0To9
Forj=0to9
n=10407+i*1000+j*10
IfnMod57=0OrnMod67=0Then
Printn
EndIf
Nextj
Nexti
*现要为班级同学购买奖品,有一张面值100元的文具购物券,需购买笔记本(10元/本)和文具盒(15元/套)。
该购物券必须一次性全部用完(不找零不贴钱)。
请列出所有可能的购买方案。
(可以全都购买笔记本或文具盒)
forx=1to10
y=int(100-10*x)/15
printx,y
nextx
*百鸡百钱问题:
已知公鸡每只3元,母鸡每只5元,每3只小鸡1元。
用100元钱买100只鸡,问每种鸡应各买多少?
DimaAsInteger,bAsInteger,cAsInteger
a=0
b=0
c=0
Fora=0to33
Forb=0to20
Forc=0to100
ifa+b+c=100anda*3+b*5+1/3*c=100then
Printa;b;c
endif
Nextc
Nextb
Nexta
*求1000以内的素数
Fori=2To1000
f=0
j=2
Forj=2Toi-1
IfiModj=0Then
f=1
EndIf
j=j+1
Nextj
Iff=0Then
Printi
EndIf
Nexti
*判断一个输入的数是否为素数(此题不是枚举)
a=inputbox(“”)
ifa<=1then
print“no”
else
f=0
fori=2toa-1
ifamodi=0then
f=1
endif
nexti
iff=0then
print“yes”
else
print“no”
endif
endif
*包装600个变形金刚,要求:
1)包装的规格分别是:
小盒每盒12个,大盒每盒15个;2)每种规格的盒数都不能为0
Forx=1to50
Fory=1to50
If12*x+15*y=600then
I=x
J=y
PrintI,j
endif
Nexty
Nextx
排序算法
*输入10个数,将这10个数从小到大排序(冒泡排序)
Dimd(1to10)assingle,iAsInteger,jAsInteger,kAsInteger
i=1
DoWhilei<=10
d(i)=InputBox("")
i=i+1
Loop
i=1
n=10
DoWhilei j=10 DoWhilej>i Ifd(j) k=d(j): d(j)=d(j-1): d(j-1)=k EndIf j=j-1 Loop i=i+1 Loop i=1 DoWhilei<=10 Printd(i) i=i+1 Loop 查找算法 *顺序查找10个数中key等于48的位置,如找到,输出数组下标 18,25,12,34,13,14,,48,49,56,67 Dimd(1To10)AsSingle,iAsInteger,jAsInteger,keyAsSingle,mAsInteger,rAsInteger i=1 DoWhilei<=10 d(i)=InputBox("") i=i+1 Loop i=1 r=0 key=inputbox(“请输入key”) DoWhilei<=10andr=0 Ifkey=d(i)then r=i endif i=i+1 Loop ifr<>0then printr,d(r) else print”didnotfind” endif *对分查找10个数中key等于48的位置,如找到,输出数组下标 12,13,14,18,25,34,48,49,56,67 Dimd(1To10)AsSingle,iAsInteger,jAsInteger,keyAsSingle,mAsInteger,rAsInteger i=1 DoWhilei<=10 d(i)=InputBox("") i=i+1 Loop i=1 j=10 r=0 key=inputbox(“请输入key”) DoWhilei<=jandr=0 m=int((i+j)/2) Ifkey=d(m)then r=m endif Ifkey j=m-1 else i=m+1 endif Loop ifr<>0then printr,d(r) else print”didnotfind” endif 递推算法(考试不需要) *一个球从100米高度自由下落,落地后反弹回到原高度的一半处,再落下,又反弹回到第2次下落时高度的一半,以后每次都反弹到上次下落的高度一半处。 求该球在第10次落地时,共经过了多少米? 第10次反弹到多高? S=100 X=100 I=1 Dowhilei<10 X=x/2 S=s+x I=i+1 Loop Prints Printx/2 *将一张足够大的纸,第一次对折,第二次再对折,第三次再对折,······,要想知道折叠27次的厚度(假设10层纸的厚度为1毫米) *一小球从10米高空落地,以后每次弹起的高度都要比前一次减少20%,经过多少次后,小球弹起的高度小于0.01米。 I=0 X=10 Dowhilex>=0.01 X=x*(1-0.2) I=i+1 Loop Printi-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 实例
![提示](https://static.bdocx.com/images/bang_tan.gif)