Ⅰ vfp金字大宝塔里面for j =1 to i j是什么意思!!
CLEAR
**清屏命令
c="金字大宝塔"
**将 "金字大宝塔"5个汉字赋值给变量c
n=LEN(c)/2
**LEN(c)是统计变量c的长度,除2是因为1个汉字占两个字节。计算后n就等于汉字数量
FOR i =1 to n
** 执行一个循环,循环次数是汉字字数
?SPACE(70-i)
**输出到屏幕一个长度为70-i的空格组成的字符串
FOR j =1 to i
**嵌套一个循环,循环次数为上级循环中的i值
??SUBS(c,2*i-1,2)
**输出到屏幕一个字符,这个字符是取变量c中的,从第2i-1个字符,取2位。也就是取一个汉字
=INKEY(0.5)
**等待0.5秒
END FOR
结束循环
ENDFOR
结束循环
单问号是先换行再输出字符,双问号是在当前位置显示。所以这个程序显示的结果是在屏幕中显示一个金子塔形状的5行字。
相关命令,看以下解释。
FOR ... ENDFOR 命令
解释:按指定的次数重复执行一组命令。
命令格式:
FOR VarName = nInitialValue TO nFinalValue [STEP nIncrement]
Commands
[EXIT]
[LOOP]
ENDFOR | NEXT
参数
VarName
指定作为计数器的内存变量名。计数器保存 FOR ... ENDFOR 循环内部 Visual FoxPro 命令执行的次数。在执行 FOR ... ENDFOR 之前,内存变量可以不存在。
nInitialValueTO nFinalValue
指定计数器的初值和终值。nInitialValue 和 nFinalValue 都可以是数组元素。
[STEP nIncrement]
指定计数器递增或递减的步长。如果 nIncrement 为负,则计数器递减。如果省略 STEP 子句,每次 VarName 增加 1。
Commands
指定要执行的 Visual FoxPro 命令。Commands 可以包含任意数量的命令。
[EXIT]
在 FOR ... ENDFOR 循环中,将控制权传递给紧跟在 ENDFOR 后面的命令。EXIT 可以放在 FOR 和 ENDFOR 之间的任意位置。更多的信息,请参见 EXIT 命令。
[LOOP]
将控制权直接返回给 FOR 子句,不再执行 LOOP 和 ENDFOR 关键字之间的语句。计数器正常递增或递减,就像执行到 ENDFOR 一样。更多的信息,请参见 LOOP 命令。
ENDFOR
指定 FOR ... ENDFOR 循环的结束。
*********************************************************
SUBS(c,2*i-1,2)解释如下:
SUBSTR( ) 函数
作用:从给定的字符表达式或备注字段中返回字符串。该字符串起始于字符表达式或备注字段的指定位置,到指定数目字符结束。
格式:
SUBSTR(cExpression, nStartPosition [, nCharactersReturned])
参数
cExpression
指定要从其中返回字符串的字符表达式或备注字段。
nStartPosition
指定返回的字符串在字符表达式或备注字段 cExpression 中的位置,cExpression 的第一个字符是位置 1。 注意:
如果 nStartPosition 大于 cExpression 中的字符数, SUBSTR( ) 返回一个空串 ("")。
nCharactersReturned
从 cExpression 中返回的字符数目。如果省略了 nCharactersReturned 参数,那么返回字符表达式结束前的全部字符。
返回值
字符型。SUBSTR( ) 返回一个字符串。
注意:
当在“调试”窗口中发出 SUBSTR( ) 时,对于备注字段,SUBSTR( ) 不会返回值。要在调试窗口中返回值,可在 ALLTRIM( ) 中放入备注字段名,并且将 ALLTRIM( ) 放入 SUBSTR( ) 中。
说明
在 SQL SELECT 命令中的备注字段中使用 SUBSTR( ) 时,将 PADR( ) 函数包含在 SUBSTR( ) 中, 这样使空的或不同长度的备注字段在转换到字符串时产生一致的结果。
示例
以下示例用 STORE 命令存储串 'abcdefghijklm' 到变量 myString 中。CLEAR 清除 Visual FoxPro 主窗口。 首先用 nStartPosition = 1 作为指定的第一个字符,用 nCharactersReturned = 5 作为指定的五个字符,SUBSTR( ) 显示该字符串 'abcde' 。接着 SUBSTR( ) 用 nStartPosition = 6 作为指定在字符串中从第六个字符开始直到字符表达式的末尾(用省略 nCharactersReturned 作为指定值),显示字符串 'fghijklm'。
STORE 'abcdefghijklm' TO myString
CLEAR
? SUBSTR(myString, 1, 5)
? SUBSTR(myString, 6)