这一节来深入理解一下for循环语句的使用
一、for语句的结构
for(初始化;判断条件;调整)
分析代码:
创建变量i
for循环语句的初始化为i=1,说明i从1开始循环
判断部分为i10时跳出循环
调整部分为i++,每循环一次I+1
此代码结果为打印1-10这10个数字
源代码
#includeint main(){int i = 0;//for(初始化;判断;调整)for (i = 1; i <= 10; i++){printf("%d ", i);}return 0;}
二、for语句中的break
与上节循环语句while中break的作用一样,都是跳出循环
分析代码:
与第一条代码基本一致
在printf语句前增加if条件语句为当i==5时跳出循环(break)
此代码的结果为:1 2 3 4(5还没来得及打印)
源代码
int main(){int i = 0;for (i = 1; i <= 10; i++){if (i == 5){break;}printf("%d ", i);}return 0;}
三、for语句中的continue
与循环语句while中的continue一样,作用为跳过continue之后的语句,重新开始一个循环
分析代码:
与第一条代码基本一致
在printf语句前增加if条件语句为当i==5时,跳过continue之后的语句(即不打印5),重新开始循环(此时i==6)
此代码的结果为:1 2 3 4 6 7 8 9 10(跳过5)
源代码
int main(){int i = 0;for (i = 1; i <= 10; i++){if (i == 5){continue;}printf("%d ", i);}return 0;}
四、for语句中的“左闭右开”形式
所谓的“左闭右开”是指初始化是被赋值的确定的数,判断部分是一个开区间
分析代码:
创建一个元素为10的数组
创建变量i
for循环的初始化为i=0
判断为i<10,为开区间,调整为i++
打印数组
此代码的结果为:10个0
源代码
int main(){int arr[10] = { 0 };int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;}
为什么建议“左闭右开”,而不建议“左闭右闭”?
:如果是“左闭右闭”,判断部分就为i<=9,不好判断循环次数,如果是i<10就知道是循环10次啦
五、一直for循环
来看这一段代码
在for循环的初始化,判断,调整都是空的,只要判断部分是空的,此时的条件就很为真,所以混进入死循环
源代码
int main(){for (;;){printf("hehe\n");}return 0;}
六、for循环嵌套使用
for循环是可以嵌套使用的,可以在for里在使用一个for
你觉得这个执行结果一共是多少个hehe呢?
答案是9个
分析代码:
当i=0进入第一个for循环,j=0,然后来到了第二个循环,在第二个循环中循环3次
在进入第一个循环中,如此也重复3次,所以3*3=9次循环
源代码
int main(){int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){printf("hehe\n");}}return 0;}
但是如果初始化省略掉,打印几个hehe呢?
这是因为当初始化省略掉后,第二个for循环3次后再进入第一个循环,然后再准备第二个循环时,j已经=3,而不是0,所以结束循环
源代码
int main(){int i = 0;int j = 0;for (; i < 3; i++){for (; j < 3; j++){printf("hehe\n");}}return 0;}
七、for循环的变式
for循环还可以被两个变量控制
由变量x,y同时限制for循环的条件,结果为两个hehe
源代码
int main(){int x, y;for (x = 0, y = 0; x < 2 && y < 5; ++x, y++){printf("hehe\n");}return 0;}
八、小练习
这个for循环会循环几次?
答案是0次
因为在判断部分k=0,是将0赋给k,而不是k==0,所以判断部分为假,不会进入循环
源代码
int main(){int i, k;for (i = 0, k = 0; k = 0; i++, k++){k++;}return 0;}
总结
以上就是本人对于循环语句for的学习与理解