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

业精于勤荒于嬉,行成于思毁于随。
今天这一篇,我们继续来说一说循环语句的知识。


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

1、for循环表达式

那么我们是不是可以把前两个条件整合一下?for循环就是如此:

for(表达式1;表达式2;表达式3)
循环语句;

表达式1
表达式1为初始化部分,用于初始化循环变量

表达式2
表达式2为条件判断部分,用于判断循环什么时候终止

表达式3
表达式3为调整部分,用于循环条件的调整

使用实例:

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", i);
	}
 	return 0;
}

输出结果:
在这里插入图片描述

1、for循环里的break和continue

同时注意for循环和while循环的不同之处,while循环的循环变量在循环语句里执行改变,而for循环是在内部的表达式里实现,所以下面这个代码,while循环只能打印到4,而for循环可以完全打印(跳过5):

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		if (5 == i)
			continue;
		printf("%d ", i);
	}
 	return 0;
}

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

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

for循环也可以省略初始化部分,判断部分和调整部分。

	for (; ; )
	{
		printf("hehe ");
	}

这段代码也是可以运行的,有兴趣的可以试一试。
如果省略for循环的判断,就意味着判断恒为真;
如果省略初始化,就得依情况而定了。

	int i = 0;
	int j = 0;
	for (;i<10 ;i++ )
	{
		for (; j < 10; j++)
			printf("hehe ");
	}
 	return 0;

在这里插入图片描述

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

我们也可以使用多个变量控制for循环:

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int x = 0;
	for (i = 0, j = 0; i < 10 || j < 10;)
	{
		if (10 == i)
		{
			j++;
			printf("%d ", x);
			x++;
		}
		else
		{
			i++;
			printf("%d ", x);
			x++;		
		}
	}
 	return 0;
}

在这里插入图片描述

也可以使用多个判断条件,这里用插入排序算法展示(笔者会及时更新排序算法的博客):

void InsertSort(int array[], int n)
{
	int s, t, q;
	s = 1;//从第二个数据开始插入,因为数组从0开始数
	while (s < n)
	{
		t = array[s];//用t来暂存数据
		for (q = s - 1; q >= 0 && t < array[q]; q--) {
			//每次q--是为了向前依次比较,
			//同时优化条件,如果取出的数据比暂存的数据大(if条件),
			//那就不需要再去依次比较,直接插到最前面就可以
			array[q + 1] = array[q];
		}//挪动数组,以便插入数据
		array[q + 1] = t;//取出的数据大的,直接执行此步操作,找到正确位置
		s++;//保证每次向前取一个数据
	}
}

我们可以看到这里的for循环里使用了“&&”之后,相当于多了一个if条件判断。

  • 21
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值