前言:我们先来了解一下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; }
运行结果
如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!