目录
一:语法形式
for 循环是三种循环中使用最多的, for 循环的语法形式如下:
1 for(表达式1; 表达式2; 表达式3)
2 语句;//如果循环体想包含更多的语句,可以加上⼤括号
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
二:执行流程
三: for循环的实践
参考代码:
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
在此,提一个小小的建议,在描述for循环中变量的取值时,最好为前闭后开。
例如;
for(i = 0; i < 10; i++)
但是,绝不是说不可以用前后均闭的形式,只是在绝多数情况下,那种表示形式逻辑更清晰,更易于理解。
上面练习的代码,就可以说是一个反例,输出一到十的数字,写上面取值的形式,就比前闭后开更容易理解。
四:for循环和while循环的对比
在上一篇文章中,我们讲解了while循环的用法,那这两种循环有什么区别呢?同样是循环,为什么for循环使用更多呢?带着这两个疑问,请看以下代码:
#include <stdio.h>
//for循环打印一到十
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)//打印,判断,调整
{
printf("%d ", i);
}
return 0;
}
//while循环打印一到十
int i = 1;//初始化
while (i <= 10)//判断
{
printf("%d",i)
i++;//调整
}
五:练习
练习一
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for(i=1; i<=100; i++)
{
if(i % 3 == 0)
sum += i;//如果是3的倍数,就可以整除3,就如if控住的语句,sum加上这个i
}
printf("%d\n", sum);
return 0;
}
当然,还可以小小的优化一下,比如,我们先找到最小的三的倍数,即3,在这之上,只要每次加三,就可以保证之后所有的数都是三的倍数。
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for(i=3; i<=100; i+=3)
{
sum += i;
}
printf("%d\n", sum);
return 0;
}
练习二
大家看到下面代码,可以不要继续向下翻,自己想一下结果:
下面代码循环几次?
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i = 0, k = 0;k = 0;i++,k++)
{
k++;
}
return 0;
}
答案是一次?无数次?还是什么呢?
下面揭晓答案:
正确答案是零次,什么都没有。这是为什么呢?
请注意,在判断部分,k与0之间是赋值操作符=,而不是判断操作符==,所以k=0,表示把k的值赋成0,在C语言中,零表示假,所以判断部分为假,不进入循环,结果为零。
六:对于书写格式的建议
第一种:
for(int i = 0;i <= 10; i++)
i这个变量在for的括号里之间定义,这种写法是C99中加进去的新语法,很多编译器并不能使用
C99的语法,这也是C++的语法。
第二种;
int i = 0;
for(;i < =10; i++)
甚至说,是这样的
for(;;;)
这种写法,在语法上是允许的,for循环的三部分,可以什么都不写,但在逻辑上是不行的,尤其是第二个代码,什么都没有,在没有判断部分的情况下,表示条件恒成立。这两种写法的结果都可能导致我们所写的代码与实际想得到的结果有一定的出入。
比如:
int main()
{
int i = 0, j = 0;
for (i = 0; i <= 5; i++)
{
for (j = 0; j <= 5; j++)
{
printf("hehe\n");
}
}
return 0;
}
这个代码的运行是,i==0时,内循环循环5次,外循环共循环5次,外循环每循环一次,内循环就循环5次,所以结果是25个hehe
当我们把i的初始部分省略的时候,结果还是正确的,那把j的初始部分也省略呢?
结果就打印了五次hehe,这是为什么呢?
在i==0第一次外循环,结束的时候,j是等于5,不满足j<=5,这个条件跳出内循环的,当i==1,外循环在此循环时,j想进入内循环,可是j的初始化被省略,j的值此时是5,不满足进入循环的条件,所以这个循环共进行5次。
由此可以看出,for循环的三个部分尽可能不要省略,不然谁都不知道在哪个地方会有bug,让结果与自己所想的有误差。
好啦!对应for循环的介绍就到这里了。老规矩哦!下一篇我们讲解下两个循环语句do while循环和goto循环。