答案:(1)DO WHILE N<3,(2)ENDDO,(3)N=N+1
【例20】用两种循环步长值来求1+2+3+...50的值,请将程序填写完整。
程序一:
S=0
FOR__(1)___
S=S+N
ENDFOR
? S
RETURN
程序二:
S=0
FOR__(2)___
S=S+N
ENDFOR
?S
RETURN
分析:这是一个计数循环的例子,由以上两种方法可以看出,初值和终值的设定是随步长值不同而变化
的,在程序一中,由于步长为1,所以省略了。缺省时,步长值默认为1。
答案:(1)N=1 TO 50,(2)N=50 TO 1 STEP -1
[例21] 求30!,请将程序填写完整。
程序:N=1
I=I*N
N=N+1
ENDDO
?I
分析:在进入循环前,必须组织好循环使累加器先赋初值勤,循环条件表达式中的控制变量也要根据
不同情况赋初值,因为循环的次数是和条件表达式中的控制变量所赋的初值密切相关的。循环体包括了
在循环体中的书写顺序也与循环的初始赋值有关。读者可以考虑一下,如果给N赋上班,那么DO WHILE
后面的条件表达式该怎么来写?
答案:N<=30
[例22] 为了解决在子程序和主程序之间可能会出现变量的重复使用命令_______,这样可以使主程序中
的变量暂时在子程序中无效,而不改变它的值。
分析;为了避免子程序和主程序之间变量带来的问题,可以使主程序中使用命令PRIVATE隐藏主程序
中可能存在的变量,使得在子程序中暂时无效。该命令的语法格式是:
PRIVATE<内存变量表>
答案:private<内存变量表》
例23 统计银行客房关系表中,银行代码为001,并且存款金额大于1500元的客房人数,请将程序填写完整。
程序:
clear
open银行客户关系表exclusive
browse all for银行代码=“001”
count all to kh
goto top
num=0
for(1)
if(2)
num=num+1
endif
skip
endfor
@2,30 say"银行代码为001,存款金额大于1500元的人数有:“num+””
endif
use
分析:在该例中,for语句使用了循环变量1控制操作,道德计算出了数据表中所含记录个数num,
然后把它人微言轻循环变量的终值,使循环变量从1开始,多次加入循环变量步长,直到循环变量1大于
num时才结束循环。
答案:(1)I=1 to kh step1,(2)金额>“1500”and,银行代码=“001”
例24 下例是关于参数传递的程序,求出正确结果。
程序:
clear
store 3 to a,b
store 2 to c,d
do tub with a,b,c,d
?b
store 4 to t2,t1
store 1 to t4,t3
do tub with t1,t2,t3,t3
?t4
do tub with 6,6,3,b
?b
procedure tub
PARAMETER A,B,C,D
B=A* A-4 *C* D
DO CASE
CASE B<0
B=120
CASE B>0
B=210
CASE B=0
B=100
ENDCASE
RETURN
分析: 在程序开始对A,B赋值为3,对C,D赋值为2。然后把实参A、B、C、D传递给予程序TUB,根据表达式B=A*A-4*c*D
计算出结果为-7,所以输出结果为120,同样,以下程序执行时,根据表达式的计算结果,输出依次为1和6。
答案:结果显示在3行上,依欠为120,1,6
[例25] 根据输入的半和径值,计算圆的面积,请将程序填写完整。
程序:
CLEAR
R=0
SM=0
@12,15 SAY “输入圆半径” CET R
READ
IF R=0
EXIT
ENDIF
————
@16,16 SAY“圆的面积为:”+ ALLTRIM(STR(SM))
ENDDO