vfp的题

vfp的题

思汗5188 1年前 已收到1个回答 举报

sadgjesklgdrh 幼苗

共回答了20个问题采纳率:95% 举报

答案是:屏幕上第一行打印出:3 5 7(我把代码运行后得出了来的.)
这个程序是2个的循环迭代.
1、中间的for i=2循环控制循环退出,exit命令;退出条件是:m%i=0,m除以i,余数=0的时候,循环退出;
2、第一个循环控制打印:m,两个?表示不换行,在当前行打印结果,m是打印的内容;打印条件是——当满足条件i>n时,循环打印当前的M值,也就是程序屏幕上最后显示的结果;其中,n=int(sqrt(m)),n是m平方根后的整数部分,即,n=取整(平方根(m)).
(完)

1年前 追问

4

思汗5188 举报

你说的我都知道 我问的不是执行的流程 我问的是计算的过程

举报 sadgjesklgdrh

把代码简单修改下,就可以看到具体计算过程了。

SET talk OFF

FOR m=3 TO 10

n=INT(SQRT(m))

? ' '

??'循环m='+ALLTRIM(STR(m))

??',m平方根='+ALLTRIM(STR(SQRT(m),4,2))

??',当前n=取整(平方根(m))='+ALLTRIM(STR(n))

FOR i=2 TO n

IF m%i=0

EXIT

ENDIF

ENDFOR

??',当前i='+ALLTRIM(STR(i))

IF i>n

?'满足条件,打印m结果'

??m

ELSE

?'--不满足条件,不打印m。'

ENDIF

? ' '

ENDFOR

--------------------

显示结果如下

--------------------


---------------------

思汗5188 举报

i是怎么在m等于5 7的时候加一变成3了??我想知道这个

举报 sadgjesklgdrh

在每一次M变化时,变量i,默认都从2开始,看下面代码—— FOR i=2 TO n &&i从2开始到n,每次加一,循环 IF m%i=0 &&当m除以i,余数等于0,执行exit命令,退出循环 EXIT &&退出for i=2 to n的循环 ENDIF &&if结束 ENDFOR &&for 循环结束 ---------- m=5,加一后是6;i从2开始,条件判断——“当m除以i,余数等于0”(6除2,余0)——于是程序执行exit,这个时候i=2。 ----------- m=7,加一后是8;i从2开始,条件判断——“当m除以i,余数等于0”(8除2,余0)——于是程序执行exit,这个时候i=2。 ------ 就是这样了。

举报 sadgjesklgdrh

建议用网页模式看吧,清楚点,手机显示有问题。

思汗5188 举报

n每次都是2 i就算再加他也不可能超过n 也只能加到二把

举报 sadgjesklgdrh

明白你的意思了。 你认为for i=2 to n这个循环,i是怎么都不会超过n,所以i>n的条件永远是不会被满足的。(这个理解有误) ----------- 拿5来说: m=5,n就算出来=2; i从2开始算: 第一次循环,i=2(5%2,余1,不执行exit),循环继续执行,i=i+1=3(就是这里了) 第二次循环,i=3,i>n(2),循环继续执行条件不满足,循环结束(保持i=3)。 判断i(3)>n(2),打印m(5)。 类似,3,7。 ------------ 这里面有个程序的循环处理细节问题,{for i=2 to n ...中间(exit退出)...到结束}——这个程序结构,如果出现exit没有被执行到的情况下,i是从2一直加1加到n——当最后一次,会出现 i=n+1(就是这里!!),循环回到for i=2 to n这句,判断,i=n+1>n,循环结束,这时(i=n+1)就是i的最后值)。 接着,程序进入{if i>n}的判断,这时就会出现条件成立,打印m当前值的结果。

思汗5188 举报

谢谢你 你真是个大好人啊
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.024 s. - webmaster@yulucn.com