张小逗
2021-06-24 09:39
比如13是素数,代入程序:
m=13,n<m,那么n只能循环到12就跳出循环了。
我又试着把条件改成n<=m,输出的结果是一样的。
可是还是有问题,比如:
m=12,n=12,不是素数,可是12满足所有条件,m%n=0跳出循环,m==n,输出结果!
看明白,请各位指教,谢谢,学习了!
我觉得因该n<m中的m是m++(先取值,后自增一)中自增的那个值。
举个例子当进行for循环时,先进行for第一级此时m取值为2,实际上经过"m++"变量m已经变为3,此后运行for循环次级n为2满足n(2)<m(3),但是在运行过程中m还是2,所以满足m%n==0跳出循环,且m==n值都为2,输出。
简单来说n<m中的m是自增之后的,其它m是取值m
我是这样理解的,不知道对不对
问题1:(理解for的执行过程4.8,只有当前循环可以正常结束,表达式3才能执行)
对于13来说,13%12!=0,满足当前循环n<m,没有中途break,所以n++,n从12变为13。
如果改成n<=m,那么在n=13时,循环中已经满足break要求,循环中途退出,循环未完成不参与n++,所以输出依然为13。
问题2:所以对于12来说,12%2==0,满足要求break,n到2就停止循环了。
C语言入门
926869 学习 · 21192 问题
相似问题
回答 1
回答 2