C语言——循环语句

一、 前言

C语言是结构化的程序设计语言,而这结构主要指的是顺序结构、选择结构、循环结构。而日常生活中的事情基本上可由这三种结构组合形成。


二、什么是循环语句

循环就是反复执行,循环语句就是把某个语句(循环体)反复执行的语句。一般可分为四个部分组成:初始化部分,判断部分,循环部分和调整部分。C语言提供了三个循环语句:for语句while语句do while语句

为了更好理解,举一个不是很恰当的例子:
在这里插入图片描述

许多人进入大学后,在 纯洁而天真的 校园时期,想拥有一段浪漫的爱情,那就可能会进入上面的循环。红线就为循环部分。一个完美的循环语句不仅要有判断表达式,还需要循环语句。这个例子只是为了更好理解而已,因为学会C语言后一样找不到女朋友…
在这里插入图片描述


三、while循环语句

1. while语句的语法

通过if语句和while语句的对比,能发现有些类似:

#include <stdio.h>
int main()
{
	if(表达式)
    	语句;
    return 0;
}   
#include <stdio.h>
int main()
{
	while(表达式)
		循环部分;
    return 0;
} 

这里的表达式都是一个规则:真,则语句执行;假,则语句不执行。而C语言中的真假是用非0或0来表示,非0表示真,0表示假,也就是说表达式的结果为0时,就不执行,为非0时就执行。
举个例子:

#include <stdio.h>

int main()
{
	int a = 1;
	if (a)//if(1)一样也可以
		printf("a=1,为真,能执行语句");
	return 0;
}	

结果如下:
在这里插入图片描述
(注意:文件名尽量不要出现汉语)

当while循环中的表达式为真时,程序就会进入循环体内执行循环部分的语句。如下:
在这里插入图片描述
从调试控制台可以发现,它一直在执行循环部分,这将导致程序进入死循环,所以我们需要用到调整部分来调整循环次数。如下:

#include <stdio.h>

int main()
{
	int a = 3;//初始化部分
	while (a)//判断表达式
	{	//{}内为循环部分
		printf("a=1,为真,能执行语句\n");
		a--;//循环部分里的特殊存在——调整部分
	}
	return 0;
}	

在这里插入图片描述

调整部分就是驯服while的工具之一,所以要记得写调整部分。


2. while循环语句中的流氓——break和continue

  • continue是跳过循环里位于它之后的代码,即本次循环中continue后边的代码不会再执行,
    而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
  • break就是结束该循环,所以while中的break是用于永久终止循环的。
    写两段代码对比一下:

continue

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			printf("1");//证明还在循环
			continue;
		}
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

在这里插入图片描述

break

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			printf("1");//证明不再循环
			break;
		}
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

在这里插入图片描述
通过对比就能很清楚的知道continue为跳过;break为终止。


三、do while循环语句

1. do while的语法

其实do while与while只有一点差别,do为做的意思,就是先循环一次后判断要不要再循环,用代码对比一下,如下:

#include <stdio.h>
int main()
{
	int i = 0;//初始化部分,
	do
	{
		printf("%d ", i);//循环部分
		i = 0;//调整部分
	} while (i);//表达式,i=0,0为假,所以不再循环
 
	return 0;
}

在这里插入图片描述

#include <stdio.h>
int main()
{
	int i = 0;//初始化部分,
	 while (i)//表达式,i=0,0为假,所以不循环
	{
		printf("%d ", i);//循环部分
		i = 0;//调整部分
	}
 
	return 0;
}

在这里插入图片描述
do while一般用在至少循环一次的场景,用的比较少。


2. do while循环语句中的流氓——continue和break

一句话:continue和break在do while和while中的用法和特点相同。

continue

#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		if (3 == i)
		{
			printf("1");//证明还在循环
			continue;
		}
		printf("%d ", i);
		i ++;
	} while (i);

	return 0;
}

在这里插入图片描述
注意:调整部分在continue很容易造成死循环这中程序错误,所以使用continue时需要多加小心。
break

#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		if (3 == i)
		{
			printf("1");//证明不再循环
			break;
		}
		printf("%d ", i);
		i ++;
	} while (i);

	return 0;
}

在这里插入图片描述


四、for循环语句

1. for循环语句的语法

for比while又要高级一丢丢了。for把初始化部分,判断部分和调整部分调到了一个小括号里了。

 for(表达式1,表达式2,表达式3)
{
 	语句;
}
表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整

for首先执行表达式1 初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果==0,则循环结束;表达式2的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,表达式2的结果是否为0,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
用for打印1-10的代码来熟悉一下:

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

在这里插入图片描述


2. 对比while和for

在这里插入图片描述在这里插入图片描述

for和while在实现循环的过程中都有初始化、判断、调整这三个部分,但是for循环的三个部分非集中,便于代码的维护。而如果代码较多的时候while循环的三个部分就比较分散,所以从形式上for循环要更优一些。


3. for循环中的流氓——continue和break

contune在for和while里的表现是不同的,如下:
在这里插入图片描述

从代码执行结果可以发现,它只有5没有打印,所以continue在for循环中的作用是跳过本次循环中continue后的代码,直接执行循环的调整部分。可以运用这特性来完成“当在条件下是,不满足什么要求,需要跳过本次的什么程序”这种场景。举个简单的例子,y=1/x,x在【-10,0)U(0,10】,且x为整数,求y的所有值,我们就可以利用continue跳过x=0这个值,使整个代码简化,而不是用两个for来算。

break在for和while循环中的表现是一样的,只要执行break,则一定终止循环。如下:

#include<stdio.h>

int main()
{
	int i = 0;

	for(i=1;i <= 10;i++)
	{

		if (i == 5)
		{
			break;
		}
		printf("%d ", i);

	}

	return 0;
}

在这里插入图片描述


五、continue和break并非流氓

在很多时候都会用的这两个关键字的
在这里插入图片描述
比如下面这段代码:
在这里插入图片描述
在这里插入图片描述
这是一个猜数字的小游戏,游戏嘛,自然要看玩家这下是否愿意玩,这就需要提供一个退出游戏的选项,而break就可以完美的完成循环的终止,用在此处就好比钱花在刀刃上。所以C语言中是没有一个无用的东西,应该把每一个关键字都学懂,并且加以利用。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过往九幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值