找回密码
 立即注册
查看: 279|回复: 0

C语言中阶第二篇:循环语句for透析(包含多条件判断和多变量控制)

[复制链接]
发表于 2022-5-11 10:33 | 显示全部楼层 |阅读模式
业精于勤荒于嬉,行成于思毁于随。
今天这一篇,我们继续来说一说循环语句的知识。

第八篇

    1、for循环表达式1、for循环里的break和continue1、for循环的空条件(for(;;))1、多变量控制for循环(以及增加判断条件)


为什么会有for循环?我们在中阶第一篇的文章提到,while循环需要几个条件:
1、循环的判断条件;2、循环变量逼近条件;3、循环语句
1、for循环表达式

那么我们是不是可以把前两个条件整合一下?for循环就是如此:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量
表达式2
表达式2为条件判断部分,用于判断循环什么时候终止
表达式3
表达式3为调整部分,用于循环条件的调整
使用实例:
  1. #include<stdio.h>intmain(){int i =0;for(i =0; i <10; i++){printf("%d ", i);}return0;}
复制代码
输出结果:



1、for循环里的break和continue

同时注意for循环和while循环的不同之处,while循环的循环变量在循环语句里执行改变,而for循环是在内部的表达式里实现,所以下面这个代码,while循环只能打印到4,而for循环可以完全打印(跳过5):
  1. #include<stdio.h>intmain(){int i =0;for(i =0; i <10; i++){if(5== i)continue;printf("%d ", i);}return0;}
复制代码

建议for循环控制的变量取值采取“前闭后开区间”的写法,我们来看一看就理解了:
对于for(i=0;i<10;i++)这行代码,它的区间就是[0,10),
所以上面那行代码也能写成这样:for(i=0;i<=9;i++),结果也是一样的。

1、for循环的空条件(for(;?)

for循环也可以省略初始化部分,判断部分和调整部分。
  1. for(;;){printf("hehe ");}
复制代码
这段代码也是可以运行的,有兴趣的可以试一试。
如果省略for循环的判断,就意味着判断恒为真;
如果省略初始化,就得依情况而定了。
  1. int i =0;int j =0;for(;i<10;i++){for(; j <10; j++)printf("hehe ");}return0;
复制代码


1、多变量控制for循环(以及增加判断条件)

我们也可以使用多个变量控制for循环:
  1. #include<stdio.h>intmain(){int i =0;int j =0;int x =0;for(i =0, j =0; i <10|| j <10;){if(10== i){
  2.                         j++;printf("%d ", x);
  3.                         x++;}else{
  4.                         i++;printf("%d ", x);
  5.                         x++;}}return0;}
复制代码


也可以使用多个判断条件,这里用插入排序算法展示(笔者会及时更新排序算法的博客):
  1. voidInsertSort(int array[],int n){int s, t, q;
  2.         s =1;//从第二个数据开始插入,因为数组从0开始数while(s < n){
  3.                 t = array[s];//用t来暂存数据for(q = s -1; q >=0&& t < array[q]; q--){//每次q--是为了向前依次比较,//同时优化条件,如果取出的数据比暂存的数据大(if条件),//那就不需要再去依次比较,直接插到最前面就可以
  4.                         array[q +1]= array[q];}//挪动数组,以便插入数据
  5.                 array[q +1]= t;//取出的数据大的,直接执行此步操作,找到正确位置
  6.                 s++;//保证每次向前取一个数据}}
复制代码
我们可以看到这里的for循环里使用了“&&”之后,相当于多了一个if条件判断。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-27 09:36 , Processed in 0.066923 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表