循环 结构

本文介绍了C语言中的三种循环结构:while、for和do while,包括它们的基本语法和使用实例。while循环在条件满足时执行,for循环适用于计数控制,do while循环至少执行一次。此外,还讨论了break和continue在循环中的作用,break用于立即退出循环,而continue则终止本次循环的剩余部分并继续下一轮。

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

在这里插入图片描述
循环结构,顾名思义指循环重复做相同的事,比如人正常的呼吸,反复的学习,这些都是在重复。在掌握了选择结构if语句后我们知道,当条件满足时,if语句后面的语句执行,但只会执行一次。然而我们发现在日常生活中很多情况下同一件事需要完成很多次,这时候就需要用到我们所提到的循环结构。
在C语言中,循环结构一般又分为3种即:while语句for语句do while语句,接下来分别了解一下他们的基本格式以及具体实例。

一、while语句
while的基本结构:
while(表达式)
循环语句;
流程图如下所示在这里插入图片描述
其中while后面的表达式用来判断是否为真,若为真则进入循环,否则将退出循环。例如想要打印1-10的10个数字:

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

其中i<=10来控制循环何时结束,即结束条件。

二、for循环
在了解了while循环的基础上,for循环作为当型循环,它能够更加容易的实现计数控制循环的方法。他的基本形式是这样的:
for(表达式1;表达式2;表达式3)
循环语句;

其中表达式1是初始化部分,用来初始化循环变量的;表达式2是条件判断部分,用来判断循环何时终止;表达式3则是调整部分,用于循环条件的调整。下面将通过具体的实例来看看他与while循环的区别,同样是打印1-10的10个数字:

#include <stdio.h>
int main()
{
 int i = 0;
 //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
 for(i=1; i<=10; i++)
 {
 printf("%d ", i);
 }
 return 0; }

同样是打印10个数字,从代码区别中不难看出while循环和for循环都具有循环的三个必要条件,但由于while循环风格原因,使得while循环中三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。for循环使用的频率也最高。

三、do while循环
do while循环从字面上看,do是做的意思,也就是说这个循环会先进入循环体执行一次再进行判断表达式,如果表达式成立就再次执行直到表达式不成立,do while循环也被称为直到型循环。他的基本形式如下:
do
循环语句;
while(表达式);

流程图:在这里插入图片描述
do while语句最大的特点就是他的循环至少执行一次,同样打印1-10,让我们看看代码和上面两种有何区别:

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

从代码中可以看出while与do while在使用时有一些区别:首先,while 语句是先计算表达式的值,再执行循环体,而do…while是执行完一次循环体,再计算表达式的值。其次,当表达式的值第一次为假时,while的循环体一次都不执行,do…while则无论表达式值如何都会执行一次循环体。

四、break和continue
在循环语句中,我们常常会使用到break和continue。他们又有哪些区别呢?
首先,break语句可以在循环结构中直接终止本层循环,执行循环后面的内容。同时,break语句只能跳出一层循环,如果是多层循环嵌套的话,break只能结束其所在位置的循环。范例如下:

//输入密码 3次以内
#include<stdio.h>
int main()
{
	int i = 0;
	char password[20] = { 0 };
	for (i = 0; i < 3; i++)
	{
		printf("请输入密码:>");
		scanf("%s", password);
		if (strcmp(password, "123456") == 0)//2个字符串的比较不能使用==,应该是strcmp()
		{
			printf("登陆成功\n");
			break;//当输入密码正确时,结束循环
		}
		else
		{
			printf("密码错误\n");
		}
	}
	if (i == 3)
		printf("三次错误,退出登录\n");
	return 0;
}


从运行结果看,使用break后,当密码输入正确时,即可直接跳出循环而不必执行全部循环。

continue语句:与break语句不同,continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到循环语句的判断部分。进行下一次循环的判断,可以理解为仅结束本次循环而并没有使整个循环终止。代码范例如下:

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (5 == i)
			//break;//用于终止整个循环
			continue;//跳出本次循环
		printf("%d\n", i);
	}
	return 0;
}

运行结果:
在这里插入图片描述
在这里插入图片描述
第一个运行结果是使用break结束循环,可以看出当满足条件i5时直接结束整个循环不打印后面的内容,而第二个使用continue的情况则是当i5时仅仅跳过本次循环即打印5,并不影响后面的循环进行。

总结一下:break语句是直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试。他只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。而continue语句则是终止当前的循环,但不结束整个循环,会继续往下进行条件判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值