C语言入门之循环结构

本文详细介绍了C语言中的while、for和dowhile三种循环结构,包括它们的语法、执行流程和实例,并对比了break和continue语句在不同循环中的应用。最后展示了循环嵌套的示例,以及如何用循环判断素数。
摘要由CSDN通过智能技术生成

前言

我们前面讲解了C语言的分支结构,本文将正式讲解C语言的最后一个结构,循环结构

正文

while语句

C语言提供了三种循环语句(while ,for ,  do while),while是其中的一种,while语句的结构和if语句很相似

while和if

#include<stdio.h>
int main()
{
    if(表达式)
        语句;
    while(表达式)
        语句;
    return 0;
}
具体对比
代码一
#include<stdio.h>
int main()
{
	if (1)
	{
		printf("hh\n");//判断为真,仅执行一次
	}
	return 0;
}

代码二
#include<stdio.h>
int main()
{
	while (1)
	{
		printf("hehe\n");//判断为真,进入循环,因为表达式恒为真,所以该循环成了死循环
	}
	return 0;
}

这里的hehe会一直打印

这就是while和if的对比,while是可以实现循环的。

while的执行流程


首先先判断表达式是否为真,如果为假,循环语句直接结束,如果为真,执行循环语句,语句执行完后,再进行判断表达式是否为真

while循环的实践 

例 打印1~10的值
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++; 
	}
	return 0;
}

运行结果

for语句 

for循环语句是三种循环语句中用的最多的。

for语句形式如下

for(表达式1; 表达式2; 表达式3)
    语句;

表达式1:循环变量的初始化

表达式2:循环条件的判断

表达式3:循环变量的调整

for循环的执行流程如下 


首先先选择表达式一,对循环变量进行初始化,再执行表达式二,对循环变量进行判断,,如果表达式二的结果为,那么循环直接结束;表达式二结果为,执行语句,语句执行完后再去执行表达式三,对循环变量进行调整,然后再去执行表达式二判断表达式是否为假,决定循环是否进行


在整个for循环流程中

表达式一只会被执行一次,接下来就是(表达式二 --> 语句 --> 表达式三 --> 表达式二 -->……)循环。

for循环的实践 

例 打印1~10的值
int main()
{
	for (int i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

int main()
{
  int i= 0;
  for ( i = 1; i <= 10; i++)
  {
  	printf("%d ", i);
  }
  return 0;
}//两种方法都可以

运行结果

for和while的对比 

while

int main()
{
	int i = 1;//1.初始化
	while (i <= 10)//2.判断
	{
		printf("%d ", i);
		i++;//3.调整
	}
	return 0;
}

for

int main()
{
//       1.初始化    2.判断  3.调整
	for (int i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

whilefor都有初始化-->判断-->调整的过程,但是while三部分是散开的,当代码较多的时候优化会麻烦一点;而for的三部分是集中在一起的,更便于代码的优化。

所以在形式上for循环会更加优良一些。

do while语句

do while循环是三种循环中使用频率最低的

因为它和while、for不一样,while和for是先判断在执行,而do while是先执行在判断是否进行下一次循环

语法如下

do
{
    语句;
}while(表达式);

do while流程如下 


先执行语句,执行完语句后再去执行表达式如果表达式为真,则继续循环;如果为假,循环结束,选择后面的语句


使用do while循环的循环体会至少执行一次,这是do while循环特别的地方

do while循环的实践 

例 打印1~10的值
#include<stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}

运行结果

 break和continue语句

在前面的for、while、do while流程图中,大家都看到了虚线上的break和continue吧,那么它们有什么作用呢?

break

用于永久的终止循环,只要break语句被执行,那么就直接跳出循环,继续往后执行代码

continue

用于跳过本次循环continue后面的代码,continue在for和while循环中使用情况是有所差异的

while循环的break和continue

while的break
int main()
{
	int i = 0;
	while (i < 10)
	{
		if (i == 5)//当i == 5 时进入
		{
			break;//跳出循环
		}
		printf("%d ", i);
		i++;
	}
	return 0;
}

因为当 等于 时,执行 if 语句的 break 语句,就会直接跳出 while循环语句,执行下面的代码

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

运行结果会是一个死循环

这是为什么呢?

因为 continue语句的作用是跳过本次循环后面的语句,再进行一次循环。 这也就导致了while循环语句经过了continue语句后跳过了调整阶段(i++),但while的表达式 一直为5,就进入了死循环

for循环的break和continue 

那么for循环的break和continue是怎么样的呢?下面我们一起来看吧

for的break

其实for循环的break和while循环的作用是一样的,都是为了永久的终止循环,不管该循环要执行多少次,一但执行到break语句,就会终止该循环,上代码!

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

运行结果:

所以break的作用就是永久的跳出循环,如果未来我们在某个条件成立而想跳出循环的时候,就可以使用break语句啦~

for的continue 

下面我们来看如果把break替换成continue会怎么样

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

运行结果:

所以在for循环中continue的作用是达成某条件,跳过该循环后的语句,直接到调整部分。

如果未来我们在某个条件成立而不想这次循环后面的语句被执行时,就可以用continue语句啦~

do while循环的break和continue 

其实do while的break和continue和while循环的几乎是一模一样的

给大家看代码感受下

int main()
{
	int i = 0;
	do
	{
		printf("%d ", i);
		i++;
	} while (i);
	return 0;
}

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

 运行结果:

循环的嵌套 

循环语句是可以和选择语句一样,进行嵌套

下面我们用学过的while,for,do while循环来做一道例题

例题 打印100~200之间的素数

注:素数⼜称质数,只能被1和本⾝整除的数字。

题目解析

1. 要想打印100~200之间的素数,就需要有100~200之间的数字,这可以用循环来解决

2.假设判断 x 是素数,就需要用2~x-1的数字来试除它,那么这就需要有2~x-1的数字,这也可以用循环来解决

3.判断x,如果x能被2~x-1之间的数字整除,就代表 x 不是素数;反之如果x不能被2~x-1之间的数字整除,就代表 x 是素数,这用什么语句就不用多说了吧   :)

参考代码

int main()
{
	int x = 0;
	for (x = 100; x <= 200; x++)//产生100~200之间的数
	{
		int y = 0;
		int flag = 1;//假设x为素数
		//            < x 就是 <= x-1
		for (y = 2; y < x; y++)//产生2~x-1之间的数
		{
			if (x % y == 0)
			{
				flag = 0;
			}
		}
		if (flag == 1)
		{
			printf("%d ", x);
		}
	}
	return 0;
}

运行结果:

结尾 

以上就是循环语句的全部知识啦,下一篇文章我会基于分支和循环语句制作一个小游戏,敬请期待

如果文中有问题,欢迎大家指出,我会及时改正!

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值