深入浅出循环语句—【C语言】

 分支语句博客:http://t.csdn.cn/U2kZF

目录

​编辑

前言:我们先来了解一下break 、continue在循环中的作用

1. while循环

 while循环中的break

 while循环中的continue 

2. for循环

for循环省略出错举例:

 for循环中的break

 for循环中的continue

3. do   while循环

利用do while循环打印1~10 

 do  while循环中的break

 do  while循环中的continue

4. 练习

4.1 计算 n的阶乘

4.2 计算1!+2!+3!+……+10!

5. 实现二分(折半)查找算法

5.1 思路分析

5.2 二分查找代码实现


前言:我们先来了解一下break 、continue在循环中的作用

break:终止循环(暴力)

continue:跳过本次循环continue后面的代码,再循环(温柔)

1. while循环

当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。 由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢? C语言中给我们引入了: while 语句,可以实现循环。



 while循环中的break

当n=5时,if语句为真,执行break语句,break在while循环中跳出的是整个循环,如果有多组循环嵌套,跳出的是内层循环(跳出一组循环)


 while循环中的continue 

 当n=5的时候,执行continue语句,跳过continue后面的代码,开始下次循环



2. for循环

表达式1 初始化部分,用于初始化循环变量的。

表达式2 条件判断部分,用于判断循环时候终止。

表达式3 调整部分,用于循环条件的调整。



for循环省略出错举例:

 这里是两个for循环嵌套,开始时i=0,j=0,进入内部for循环,循环4次出内层循环,这是j=4,再当i=1,再次进入内层for循环的时候,这是由于j没有初始化部分,所以j还是为4,直接跳出内层for循环~~~本来打印16个hehe,现在只打印4个



 for循环中的break

 当i=5时,执行break代码,直接跳出for循环


 for循环中的continue

 当i=5时,执行continue代码——跳出本次循环continue后面的代码,直接到调整部分—>再到for循环判断部分


for循环使用建议

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。



3. do   while循环

 循环至少执行一次,使用的场景有限,所以不是经常使用。



利用do while循环打印1~10 


 do  while循环中的break

break直接跳出循环


 do  while循环中的continue

 continue跳过本次循环后面的代码,由于这里跳过了调整部分,i=5一直为真,一直执行continue,就打印出1234 死循环



4. 练习

4.1 计算 n的阶乘

int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = 1; 		//注意ret不能定义为0
	for (int i = 1; i <=n ; i++)
	{
		ret *= i;
	}
	printf("%d", ret);
	return 0;
}

4.2 计算1!+2!+3!+……+10!

int main()
{
	int ret = 1;
	int sum = 0;
	for (int i = 0; i <=10 ; i++)
	{
		ret *= i;
		sum += ret;//sum=sum + ret;也可以这样来看
	}
	printf("%d", sum);
	return 0;
}

5. 实现二分(折半)查找算法

二分查找算法使用的前提是数组元素有序(升序)、(降序)

5.1 思路分析

1.确定被查找范围的左右下标left、right
2.根据left和right,确定中间元素下标mid
3.根据mid锁定的元素,和要查找的元素进行比较,确定新的元素范围left和right


 5.2 二分查找代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>


int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//升序
	//printf("%d\n", sizeof(arr));//计算的数组的总大小,单位是字节
	//printf("%d\n", sizeof(arr[0]));//4
	//printf("%d\n", sizeof(arr) / sizeof(arr[0]));
	int k = 7;
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	//1
	int left = 0;
	int right = sz - 1;
	int flag = 0;//flag的作用是标志是否找到了
	//2
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] == k)
		{
			printf("找到了,下标是:%d\n", mid);
			flag = 1;
			break;
		}
		else if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else
		{
			right = mid - 1;
		}
	}
	//1 2
	if (flag == 0)
		printf("没找到\n");

	return 0;
}

 运行结果



如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!

猜你喜欢

转载自blog.csdn.net/qq_58286439/article/details/130513604