一道vfp求解释~为什么?很急!Set talk offCleaInput ‘请输入1到9之间的数=’ to nK=10J=1For i=1 to n?space(k)For f=1 to 2*i-1?substr(alltrim(str(j),),1,1)Endif?If i%2=0K=k+1J=j-2ElseK=k-1J=j+2EndifEndforSet talk on当n输入2,结果是

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 02:16:15
一道vfp求解释~为什么?很急!Set talk offCleaInput ‘请输入1到9之间的数=’ to nK=10J=1For i=1 to n?space(k)For f=1 to 2*i-1?substr(alltrim(str(j),),1,1)Endif?If i%2=0K=k+1J=j-2ElseK=k-1J=j+2EndifEndforSet talk on当n输入2,结果是

一道vfp求解释~为什么?很急!Set talk offCleaInput ‘请输入1到9之间的数=’ to nK=10J=1For i=1 to n?space(k)For f=1 to 2*i-1?substr(alltrim(str(j),),1,1)Endif?If i%2=0K=k+1J=j-2ElseK=k-1J=j+2EndifEndforSet talk on当n输入2,结果是
一道vfp求解释~为什么?很急!
Set talk off
Clea
Input ‘请输入1到9之间的数=’ to n
K=10
J=1
For i=1 to n
?space(k)
For f=1 to 2*i-1
?substr(alltrim(str(j),),1,1)
Endif
?
If i%2=0
K=k+1
J=j-2
Else
K=k-1
J=j+2
Endif
Endfor
Set talk on
当n输入2,结果是
1
333,当输入3,结果是
1
333
11111

一道vfp求解释~为什么?很急!Set talk offCleaInput ‘请输入1到9之间的数=’ to nK=10J=1For i=1 to n?space(k)For f=1 to 2*i-1?substr(alltrim(str(j),),1,1)Endif?If i%2=0K=k+1J=j-2ElseK=k-1J=j+2EndifEndforSet talk on当n输入2,结果是
Set talk off
Clea
Input ‘请输入1到9之间的数=’ to n
K=10
J=1
For i=1 to n &&根据n的值来确定i大循环的次数,同时也是显示值有多少行
?space(k) &&同一行显示k个空格.后面k的值会根据i是奇偶数而轮番改变,所以后面每换一行空格数会各是9个、10个、9个、10个.目地就是在显示具体数字j的前面有这么多个空格.
For f=1 to 2*i-1 &&根据i的不同,f循环次数为从1到1/3/5/7等等次数,
?substr(alltrim(str(j),),1,1) &&就是同一行连续显示多次j的值,具体次数就是2*i-1那么多个.所以后面输入2时,会有333共3个3;输入3时,会有11111共5个1. 3个函数,是将数字j,转换成字符j,不要多余空格;j值大于9时,只取第一个数字(字符).
Endif &&这里应该是写错了,应该是Endfor
? &&后面要再继续的话,会换一行再显示.相当于?""
If i%2=0 &&判断i是否被2整除,即i是否是偶数
K=k+1 &&
J=j-2 &&
Else &&i是奇数的话
K=k-1
J=j+2
Endif &&上面几句,i值总会是从1到n地进行奇数偶数轮番变化,k值也依次为10/9/10/9... j值也依次为1/3/1/3/.这样的变化
Endfor
Set talk on
* 一个学习技巧:将每个变量n/k/j/i/f的值分行写在草稿纸上,每执行一句命令后,都将改变了的值重新记录下来,作为下一步的判断.