? ― 5!= ―+ str ( i , 9 ) &&显示:5!= 120
练习;求任意数的阶乘 ( input ―n=‖ to n)
#例4:输入任意的5个正数,输出其中的最大值 i= 1 t= 0
do while i< 6
input ― k=‖ to k
if k > t && t是中间变量,存放较大的数 t = k T K endif 0 5 i = i+1 enddo
? ―最大数是:‖ , t
&&以此类推,求最小值
例5: <辅导教材p292-4> act = ―1‖
do while act $ ―1234‖ ? ‖*‖
acce ―act= ― to act enddo
***永真循环
(循环体内必须有出口exit,循环次数不确定)
《辅导教材p.142例4-68》 (程序改错 )
输入若干个非零的任意数,分别统计其中的正、负数的个数及正、负数的和,输入 0时结束。 《例》
set talk off a, b, c, d = 0
do while .t. &&不需要循环控制变量
input ―输入数― to n
do case &&在循环内
输入数据
case n=0
exit &&立即退出循环
case n>0
a=a+n &&统计正数的和,存于a中
b=b+1 &&统计正数的个数,存于b
case n<0
c= c +n &&统计负数的和,存于c
d= d+1 &&统计负数的个数,存于d endcase
enddo &&不需要修改循环变量
? ―正数的和与个数是:‖ , a , b ? ‖负数的和与个数是:‖ , c , d set talk on
<永真循环>:练习辅导书p85例3-17、p297-6、p321-6、实验教材p50-1,教
科书p151-5
(二) for循环 (p98)
格式:
for <内存变量>=<初值> to<终值>[step<步长值>]
<命令序列> endfor | next
说明:本命令中的内存变量用于控制循环次数(计数器),从变量的初值开始每次循环都按步长(默认为1)自动修改其值 ,直到超过终值, 则退出循环。for循环也可以嵌套。
流程图:
《例1 求10 ! 》 ( 10!=1*2*3*…*10) 用do循环计算: 用for循环计算:
n=1 p=1 p=1
do while n<=10 for n=1 to 10
p=p*n p=p*n n=n+1 endfor enddo ? p ?p
《for循环求10! 方法2》 &&与do 循环对比
p=1 &&不用在循环前给n赋值
for n= 10 to 1 step –1
p= p* n &&不用写: n= n+1,自动修改n
endfor &&或写: next
?‖1*2*…*10=‖ , p
《p143例4-69》输入10个的数,求其中能被3整除但不能被7整除的数