我们要注意一下在for循环里面的循环的次数是多少,这个是在我前期学习for语句的时候老犯的一个错误,就是经常多一次循环,比如我们来看下面这个语句:
for(i=0;i<n;i++);
这里的循环的次数为n,在循环结束的时候,i的值为n,循环的次数的控制的变量为i。
注意这里的i是来判断是从0还是1开始,来判断小于n还是小于等于n。这点非常重要。
如何来探讨这个问题,我们用一个程序来判断循环了多少次:
#include<stdio.h>
int main()
{
int i;
//最小的i的大小为0,最大的i的大小为4.
for (i = 0; i < 5; i++)
//注意,这里的i从0到小于5和从1到小于等于5,这两个走的轮数是一样的,都是5轮。
//但是,不同的是,前者i是从0到最后循环结束的i为5,而后者是从1到循环结束的6.
{
printf("i=%d", i);
}
//i=5不能在循环里面,但是结束了循环之后,i的值为5.
printf("\n最后i=%d\n",i);
return 0;
}
其实,经过我们的分析,我们可以看出:for==while。
for(int i=1;i<=n;i++)
{
fact*=i;
}
和下面用while写的是一样的。
int i=1;
while(i<=n)
{
fact*=i;
i++;
}
用流程图来看是这样的:
注意,任何一for循环都能改写成为一个while循环。
回忆一下for循环的组成的部分:
for(初始条件;条件;每轮的动作)
{
}
这里注意,for中的每一个表达式都是可以省略的
写的更明白一点就是for(;条件;)==while(条件)
我们再把三个流程图对比起来看一看
for | while | do-while |
|
|
|
和while循环等价 | 相对于do-while循环先判断条件是否成立 | 相对于while循环,先进入第一轮循环,然后再判断条件。 |
注意的一点: 如果有固定次数的话,用for循环。 如果必须执行一次的话,用do-while循环。 其他的情况用while循环 |
具体的循环区别再后面会说到。