C语言学习————循环语句for

for循环

语法

 表达式1初始化部分,用于初始化循环变量的。表达式2条件判断部分,用于判断循环时终止。表达式3调整部分,用于循环条件的调整。

例子:

int main()
{
	int i = 0;
	for (i = 1; i < 10; i++)
	{
		printf("%d", i);
	}
	return 0;
}

for循环执行流程

break和continue在for循环中

我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。但还是有些差异:

代码1:

int main()
{
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		if (i == 5)
			break;
		printf("%d\n", i);
	}
	return 0;
}

代码2:

int main()
{
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d\n", i);
	}
	return 0;
}

由以上两段代码我们可以看出,在for循环中,break的用法和while循环一样,跳出了整个循环,而continue却不会变成死循环,因为代码在跳出后面部分后会继续前面的调整部分,所以代码二的输出结果是跳过5,输出01234678910.

for语句的循环控制变量

一些建议:

        1.不可在for循环体内修改循环变量,防止for循环失去控制。

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d", i);
		i = 5;
	}
	return 0;
}
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d", i);
		int j = 0;
		for (j = 0; j < 10; i++)
		{
			printf("hehe\n");
		}
	}
	return 0;
}

        2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

int main()
{
	int arr[10] = { 0 };
	int i = 0;//i<=9;
	for (i = 0; i < 10 ; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}

这一段代码的判断部分:i<10写成i<=9也可以,结果也不会变,但是写成i<10效果更好,理解程度和可读性都比较好。

注意:

代码1:

int main()
{
	for (;;)//判断部分的省略,会使判断部分恒为真,从而使代码变成死循环
	{
		printf("hehe");
	}
	return 0;
}

代码2:

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;
}

代码3:

int main()
{
	int i = 0;
	int j = 0;
	for (; i < 3; i++)
	{
		for (; j < 3; j++)
		{
			printf("hehe\n");
		}
	}
	return 0;
}

代码2情况下,会打印9个hehe(i循环一次,j会循环三次)

而在代码3情况下,只会打印3个hehe,因为i和j的for循环中,并没有初始化,当i循环第一次时,j循环三次,最终变成3,而当i循环第二次时,由于j没有初始化,还是原来的3,直接跳出循环不打印hehe,所以最终只会打印3个hehe

这就是胡乱省略给我们带来的不便,所以不要怕麻烦,能不省则不省。

代码4:

int main()
{
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; x++, y++)
	{
		printf("hehe\n");
	}
	return 0;
}

可以用两个变量控制循环

一道笔试题

//请问要循环多少次?

int main()
{
	int i = 0;
	int k = 0;
	for (i = 0, k = 0; k = 0; i++, k++)
		k++;
	return 0;
}

答案是0次,因为判断部分k=0是赋值而不是判断,0为假,不进入循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值