VFP中有如下程序:for i=1 to 10 / ?i /i=i+1 /endfor .想问一下他是怎样的一个运算方式。

我知道他共循环了5次,分别是1,3,5,7,9,但是就是不明白是一个怎样的过程。请详解过程。

你的程序执行结果应该是:1,3,5,7,9 原因是“ i=i+1 ”改变了“ i ”的值,从而改变了循环次数。

for i=1 to 10 本来是从1循环到10,共循环10次(因默认步长为1),
但是,在 ?i 后面加了 i=i+1,执行第一次循环时,?i为1, i=i+1=2
因为i已经为2了, 此时,for i=1 to 10就要从3开始。
同理:?i为3时, i=i+1=4,i已经为4了, 此时,for i=1 to 10就要从5开始
........
?i为7时, i=i+1=8,i已经为8了, 此时,for i=1 to 10就要从9开始,

在这个循环语句中,
for i=1 to 10
?i
i=i+1
endfor
在这个循环语句中(默认步长为1),赋值语句 “i=i+1”是改变循环次数的关键,当 “i=i+1”这个赋值语句给“ i ” 赋了值新值后,for i=1 to 10循环就从“ i ” 的新值后一位开始循环。
如果写成“ i=i+9 ”,就只会循环1次,因循环第一次后“ i ”就为10了。
如果写成“ i=1 ”,就是个死循环, 因每次循环“ i ”都为1,永远到不了10,就只会永远循环下去(死循环)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-20
for i=1 to 10,是从1到10,这个循环的是10次,如果是for i=1 to 10 step 2(步长为2),这才是循环的5次,分别是13579
第2个回答  2012-03-20
for i = 1 to 10
?i
endfor
这样执行结果是1,2,3,4,5,6,7,8,9,10。因为每循环一次i都会加1
你先在再?i后面又让i加1,就相当于每次循环i+2,结果肯定是你现在看到的结果。追问

稍微懂那意思,但感觉理解起来有点牵强。

...10 \/ ?i \/i=i+1 \/endfor .想问一下他是怎样的一个运算方式。_百度知 ...
你的程序执行结果应该是:1,3,5,7,9 原因是“ i=i+1 ”改变了“ i ”的值,从而改变了循环次数。for i=1 to 10 本来是从1循环到10,共循环10次(因默认步长为1),但是,在 ?i 后面加了 i=i+1,执行第一次循环时,?i为1, i=i+1=2 因为i已经为2了, 此时,for i=1 to...

vfp程序解答,set talk off,s=0,for i=1 to 10,i=i+1,s=s+i,endfor...
for i=1 to 10 i=i+1 s=s+i endfor ?s,i 首先当i=1时,由于i=i+1命令,使得i=2了,s=s+2=0。第二次循环时,由于i已经等于2了。再取步长1,实际上i=3了。i+1=4,s=s+4=2+4=6 依次循环,最后相当于是s=2+4+6+8+10=30 ...

用VFP编程,任意输入10个数,按从大到小的顺序排列。
\/\/ 对数组进行从大到小的排序 FOR i = 1 TO 9 FOR j = i + 1 TO 10 IF a(i) < a(j) THEN t := a(i)a(i) := a(j)a(j) := t ENDIF ENDFOR ENDFOR \/\/ 输出排序后的数组 PRINT "10个数从大到小的顺序是:"FOR i = 1 TO 10 PRINT a(i)ENDFOR \/\/ 结束程序 RE...

vfp随机函数重复问题
如果第一次发出 RAND( ) 时使用的 nSeedValue 参数是负数,那么将使用来自系统时钟的种子值。若要获得随机程度最大的数字序列,可以最初用一个负的参数发出 RAND( ) 函数,然后再不带参数发出 RAND( ) 函数。如下:rand(-1)for i=1 to 10 s=int(rand()*10+1)?s endfor ...

用vfp制作一程序 从键盘上任意输入十个数显示并累加
clear s=0 for i=1 to 10 input "请输入一个数:" to x s=s+x endfor ?"它们的和是:",s

1的阶乘加到10的阶乘用vfp程序怎么写?
S=0 FOR i = 1 to 10 S=S+jc(i)ENDFOR ?S PROCEDURE jc PARAMETERS j ss=1 FOR K = 1 to j ss=ss * k ENDFOR RetURN ss ENDPRO

vfp 按钮 文本框
双击计算按钮 添加代码 clear all s=0 for i=1 to 10 if mod(i,2)=0 s=s+i endif endfor thisform.text1.value=s

用VFP编程随机产生10个1~100之间的正整数,并求他们的和
rand()函数生成0-1的随机数, 要生成1-100的,需要处理下 clear s=0 ??'十个随机1-100的正整数为:'for i=1 to 10 n=int(rand()*(100-1+1)+1)??n s=s+n endfor ?'它们的和为:',s

.VFP设计一个程序:任意输入10个数,求其和并显示结果。求大侠解答...
dimension a(10)s=0 for i=1 to 10 input "请输入第"+alltrim(str(i))+"个数:" to a(i)s=s+a(i)endfor ?"和为:"+alltrim(str(s))

vfp6.0 输入10个数,找出最大值与最小值?
clear dime a(10)for i=1 to 10 input to a(i)endfor max=a(1)min=a(1)for i=2 to 10 if max<a(i)max=a(i)endif if min>a(i)min=a(i)endif endfor "10个数中最大数为:",max "10个数中最i小数为:",min return ...

相似回答