C语言分支与循环(下)

本文详细介绍了C语言中的循环结构,包括while、do-while、for和goto的用法及区别。重点讲解了while与do-while的执行顺序差异,for循环的语法形式及其在实际编程中的应用,以及goto语句在特定情况下的便利性和潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章C语言分支与循环(上)介绍了可以实现分支结构的语句if…elseswitch和关系操作符">、>=、<、<=、==、!=“,还有逻辑操作符”&&、||、!"本篇文章将介绍可以实现循环结构的语句whilefordo-whilegoto

1、while与do-while

1.1、while

while 循环首先检查循环条件,只有当条件为真时才执行循环体。因此,如果条件一开始就为假,那么循环体将永远不会执行。而如果条件一直为真,那么循环将一直执行下去。打印1~10的数,如下:

int main(){
	int i = 1;
	while (i <= 10) //while(条件表达式),此时表示要循环10次。
	{
		printf("%d ", i); //打印每一次循环时i的值为多少。
		i = i + 1; //第一次循环时i=1,此时i=2,那么即将重新回到while循环第二次,以此类推。
	}
	return 0;
}

1.2、do-while

do while 循环与 while 循环的主要区别在于它们执行循环体的顺序。do while 循环首先执行循环体,然后检查循环条件。因此,即使条件一开始就为假,循环体也会至少执行一次。打印1~10的数,如下:

int main(){
	int i = 1;
	do //第一次先执行完do循环体的语句再执行while语句。
	{
		printf("%d ", i);
		i = i + 1;
	} while (i <= 10); //do循环体的语句执行完毕开始执行while语句。
	return 0;
}

1.3、while与do-while的区别

whiledo-while的区别就在于前者是先执行while的条件表达式判断真假后是否执行循环体,而do-while无论真假,循环体也就是do里面的语句都会先执行,然后再开始进入while条件表达式判断真假后是否执行循环体。

2、for

2.1、for的语法形式

for ( init; condition; increment )
{
   statement(s);
}
  1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
  2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
  3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

2.2、for的实践

打印1~10的数,如下:

#include <stdio.h>

int main()
{
	int i = 0;
	//执行i=1,满足i<=10,执行循环体,最后i++,以此类推
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

其中for在循环中是用的最多的语句,do-while是最少用的。从以上部分我们可以看到for其实就是while优化后的版本,如果代码较多的时候使用while就会显得代码分散,而for就比较集中更易于代码维护。

3、goto

C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。

#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next:
	printf("haha\n");

next:
	printf("跳过了haha的打印\n");
	return 0;
}

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建
议是能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出
使⽤ goto 就⾮常的⽅便了。

for (...)
{
	for (...)
	{
		for (...)
		{
			if (disaster)
				goto error;
		}
	}
}
error:
//...

本来 for 循环想提前退出得使⽤ break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套
就得使⽤3个 break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值