学C的第七天(继续 深入了解 循环语句,学习二分查找‘折半查找算法’;练习:计算n的阶乘、计算阶乘再相加、在有序数组中查找某个数字、多个字符从两端移动向中间汇聚、模拟用户登录情景)-1

简介: 2.for循环语句(常用):for循环语句格式:for (表达式1; 表达式2; 表达式3)

ade26906f5684408b0ac09b3eb859677.png2.for循环语句(常用):

for循环语句格式:


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


{                                                  


循环语句;                        


}                                                  


                                               


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


表达式2:条件判断部分,用于判断循环是否终止。


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


({}还是养成习惯,能用就用,不然会跟之前的if一样,默认只能执行一个语句)

//利用for循环打印1~10
#include <stdio.h>
int main()
{
  int i = 0;
  //表达式1的变量最好在for循环外部声明
  //在表达式1中声明可能会出问题,C++可以这么用(C99)
  for ( i = 0; i <= 10; i++)
  //  表达式1   表达式2  表达式3
  {
    printf("%d ", i);
    //循环语句
  }
  return 0;
}

f35d7b6683e4434ebc90f9166ad639df.png

*重点补充:

1. for循环中breakcontinue

break

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


405a1f8b22404e018d514250f96e105a.png

continue

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


d5cfc45fcbf64a288929af5034b069d6.png

2. for循环语句循环控制变量

建议:

(1).不要在for循环体内修改循环变量,防止for循环失去控制:

//在for循环体内修改循环变量
#include <stdio.h>
int main()
{
  int i = 0;
  for ( i = 0; i <= 10; i++)
  {
    if (i = 5)
    {
      continue;
    }
    printf("%d ", i
);
  }
  return 0;
}


664fb95bad804372aee96152e0dbbe0b.png

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

//for语句的循环控制变量的取值采用“前闭后开区间”写法
#include <stdio.h>
int main()
{
  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
  //下标:        0 1 2 3 4 5 6 7 8 9
  int i = 0; //[0 , 10)
  for ( i = 0; i < 10 ; i++)
// 这里 i = 0 是 闭区间,i < 10 是 开区间,即“前闭后开区间”写法,[0 , 10).
// 可以清楚地看到 循环次数是 10次
  {
    printf("%d ", arr[i]);
  }
  return 0;
}

image.png

3.一些for循环的变种

(1).for循环中的初始化部分(表达式1)判断部分(表达式2)调整部分(表达式3)可以省略的,但是不建议初学时省略,容易导致问题。

//for循环的变种1
#include <stdio.h>
int main()
{
  //初始化(表达式1)和 调整部分(表达式3)的省略就是啥都不做
  //判断部分(表达式2)省略了,意味着判断是 恒为真 的
  for  ( ; ; )
  {
    printf("hehe\n");
  }
  return 0;
}


image.png

(2).省略掉初始化部分:

//省略掉初始化部分
#include <stdio.h>
int main()
{
  int i = 0;
  int j = 0;
  for ( ; i < 4; i++)
  {
    for ( ; j < 4; j++)
    {
      printf("hehe\n");
    }
  }
  return 0;
}


65321cdc24c340fc8fa1fa4a47b97e6e.png

(3).使用多于一个变量控制循环:

//使用多于一个变量控制循环:
#include <stdio.h>
int main()
{
  int x, y;
  for ( x = 0, y = 0 ; x<2 && y<5 ; ++x, y++ )
  {
    printf("hehe\n");
  }
  return 0;
}


e771a9b2f9e640049ac60535a6727796.png

3.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;
}

4c6d101e4c8c4a068f31e4e78d525a01.png

(使用的场景有限,所以不是经常使用)

相关文章
|
10天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
11天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
20 0
|
18天前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
18天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
1月前
|
算法 索引
算法思想总结:二分查找算法
算法思想总结:二分查找算法
|
1月前
|
Rust Dart 算法
55.3k star!开源算法教程,附带动画图解,学习算法不再苦恼!
55.3k star!开源算法教程,附带动画图解,学习算法不再苦恼!
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Canny边缘检测算法
Opencv(C++)学习系列---Canny边缘检测算法
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真