学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月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
11月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
300 0
|
算法 JavaScript 数据安全/隐私保护
基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真
本内容介绍了一种基于GA遗传优化的阈值计算方法在认知异构网络(CHN)中的应用。通过Matlab2022a实现算法,完整代码含中文注释与操作视频。能量检测算法用于感知主用户信号,其性能依赖检测阈值。传统固定阈值方法易受噪声影响,而GA算法通过模拟生物进化,在复杂环境中自动优化阈值,提高频谱感知准确性,增强CHN的通信效率与资源利用率。预览效果无水印,核心程序部分展示,适合研究频谱感知与优化算法的学者参考。
|
10月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
384 1
|
算法 数据可视化 开发者
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
为什么要学习数据结构与算法
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
770 0
|
9月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
488 2
|
10月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
394 3
|
9月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
394 8

热门文章

最新文章