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
举报
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
--------------------
显示结果如下
--------------------
---------------------
举报
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
明白你的意思了。 你认为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当前值的结果。