循环结构、break、continue

循环结构

在C语言程序中,有顺序结构、选择结构、循环结构三种结构。我们用分支语句,包括 if语句、switch语句来实现选择(分支)结构;用循环语句,包括 while循环、for循环和do…while循环来实现循环结构。循环结构简言之就是重复不断的执行相同的操作。或者说 相同的操作放在一个循环语句里重复执行。在这里我们来挖掘这三种循环语句的优缺点和三者之间的共性。

while循环

  • 语法形式:
while(表达式)   
   语句//多条语句时需要使用{}把多语句包括起来
  • 执行流程
    在这里插入图片描述
    从上述流程图可知:首先先进行表达式的判断,如果条件为真(成立),执行循环体中的语句,返回条件表达式再判断;如果条件判断为假,直接跳出循环,不执行循环体。当条件判断为假,循环结束。
  • 案例
    练习1:在屏幕上打印1~10的值
#include<stdio.h>
int main({
	int i=1;
	while(i<=10)
	{
	printf("%d \n",i);
	i++;
	}
	return 0;
}

运行结果:
在这里插入图片描述
练习2:输⼊⼀个正的整数,逆序打印这个整数的每⼀位。
例如:输⼊:1234,输出:4 3 2 1
题目分析:

  1. 要想得到n的最低位,可以使⽤num%10的运算,得到的余数就是最低位,如:1234%10得到4
  2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ num=num/10 操作就可以去掉最低位的,如:num=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
  3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。
#include<stdio.h>
int main()
{
	int num;
	scanf("%d",&num);
	while(num)//当num==0时,判断为假,循环结束。(在C语言中,0表示假,非0表示真)
	{
		printf("%d",num%10);
		num=num/10;
	}

	return 0;
}

运行结果:
在这里插入图片描述

for循环

  • 语法形式
for(表达式1;表达式2;表达式3)//表达式后面是分号,不是其他符号
	语句//有多条语句时使用{}把所有语句包含起来
//表达式1是循环变量的初始化
//表达式2是循环变量的判断
//表达式3是循环变量的调整

仔细观察while语句和循环语句的细微之处;

  • 执行过程

    ⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果==0,则循环结束; 表达式2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表达式3 ,调整循环变量,然后再去表达式2 的地⽅执⾏判断,表达式2 的结果是否为0,决定循环是否继续。
    整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2语句、表达式3语句在循环。
  • 案例
    练习:计算1~100之间3的倍数的数字之和
//解法一
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 3; i <= 100; i += 3)
	{
		sum += i;	
	}
	printf("sum=%d\n", sum);
	return 0;
}
//解法二
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
			sum += i;
	}
	printf("sum=%d\n", sum);
	return 0;
}

运行如下:
在这里插入图片描述

do…while循环

  • 语法形式
do
{
	语句
}while(表达式);//单句语句可以不用代码块{}
  • 执行过程
    在这里插入图片描述
    do…while循环,第一步先执行循环体中的语句,再进行条件判断,不同于其他两个循环。如果条件成立,继续执行循环体中的语句,直至条件判断不成立,跳出循环。由此可知,do …while循环 至少要执行循环体中语句一次,其他两个循环则先判断,条件成立再执行,否则不执行。 每一种循环都有它存在的价值,都有适用于它的场景,使程序更加高效,可读性强。fou循环把循环变量初始化、判断、调整放在一个位置一起书写,使得阅读时方便。
  • 案例
    练习:输⼊⼀个正整数,计算这个整数是⼏位数?
    例如:
    输⼊:1234 输出:4
#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	int count = 0;//用来计数整数的位数。
	do
	{
		count++;
		num = num / 10;
	} while (num);
	printf("count=%d\n", count);
	return 0;


}

运行结果;
在这里插入图片描述

break和continue

细心的人会发现,上面三个循环的执行流程图中都写着break和continue,那么,break和continue在循环之中起什么作用呢?他们在while循环、for循环、do …while循环里作用是否都一样呢?我们学习知识,更应该注重细节,这样,才能更加夯实我们的基础,为之后的学习打下坚实的基础。
首先,我们先来观察break和continue在while循环中的表现,从表现上推出他的作用。

循环中的break

while循环中break

#include<stdio.h>
int main()
	{
		int i = 1;
		while (i <= 10)
		{
			if (5 == i)
				break;//添加了break
			printf("%d ",i);
			i++;
		}
		return 0;
	}

在这里插入图片描述
在while循环中在代码中加了break语句,不再是在屏幕上打印1-10,只是打印了1-4,好像数字五之后的循环被终止了一样。我们再接着看其他连个循环中的break。

for循环中break

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

运行结果:
在这里插入图片描述
打印结果同while一样,数值4之后的循环被中断了。

do…while循环中break

int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
		if (i == 5)
			break;
	} while (i <= 10);
	return 0;
}

运行结果:
在这里插入图片描述
打印结果同上面循环一样,数值4之后的循环被中断了,不再打印,仿佛数字4之后的循环提前结束了

break的总结

由上可知,break在三个循环中的作用都是是终止循环,作用完全一样。一旦break语句被执行,跳出循环,循环被永久终止,不再执行。

循环中的continue

while循环中的continue

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

运行结果:
在这里插入图片描述
没有打印数值5

for循环中的continue

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

运行结果:

数字5依然被跳过了

do… while循环中的continue

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

运行结果:
在这里插入图片描述

continue的总结

演示三个循环中continue的表现,可知,执行到continue时, 跳过本次循环体中continue之后的语句,跳到条件表达式进行判断,再执行

continue在while循环和for循环的 不同:
在while中,continue正常跳到条件表达式进行判断,但是在for循环中,continue却是跳到循环变量的调整处。
在这里插入图片描述

goto语句

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

int main()
{
	printf("haha\n");
	goto error;
	printf("hehe\n");
error:
	printf("跳过了hehe\n");
	return 0;

}

运行结果:
在这里插入图片描述

分析;
在这里插入图片描述

goto语句有特别的应用场景,当嵌套了几个循环时候,可以利用goto语句跳出所有的循环,而break只能跳出限制它的循环,即一个循环,在这一点上,使用goto语句更高效。在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值