作业帮 > 综合 > 作业

vfp的题  

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/27 23:24:51
vfp的题
 
答案是:屏幕上第一行打印出: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)).
(完)
再问: 你说的我都知道 我问的不是执行的流程 我问的是计算的过程
再答: 把代码简单修改下,就可以看到具体计算过程了。
SET talk OFFFOR 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--------------------显示结果如下--------------------
---------------------
再问: i是怎么在m等于5 7的时候加一变成3了??我想知道这个
再答: 在每一次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。 ------ 就是这样了。
再答: 建议用网页模式看吧,清楚点,手机显示有问题。
再问: n每次都是2 i就算再加他也不可能超过n 也只能加到二把
再答: 明白你的意思了。 你认为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当前值的结果。
再问: 谢谢你 你真是个大好人啊