C语言编程新手的逻辑问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:04:55
我在书上看到这样一个求100以内质数的程序,但是这里的5-8行读不懂了。。按理说for(i=2;i<k;i++)应该是以i<k为循环前提的,那不管i的取值有没有被break,按理说都不应该大于当前循环的k啊,为什么后边又能判断出i==k呢。。。。求高手解答!

#include "stdio.h"
main()
{int i,k;
for(k=3;k<100;k++)
{for(i=2;i<k;i++)
if(k%i==0)
break;
if(i==k)
printf("%d",k);
}
}

如果内部的循环一次都没有break(即k是素数),那么最后退出循环时,还要执行一次i++,使得i的值从k-1变成了k

您好楼主
是这样的~
这个循环的循环条件是i<k,也就是说只要满足这个条件循环就继续~

但是它不是永远执行下去~ 当他没有被break却跳出这个循环的时候就是因为不满足循环条件了

也就是说这时i=k了

我们经常用这样的方法来判断循环是否执行到底~