当前位置: 首页 > news >正文

三、C语言中的分支与循环—for循环 (6)

 本章分支结构的学习内容如下:

三、C语言中的分支与循环—if语句 (1)

三、C语言中的分支与循环—关系操作符 (2)

三、C语言中的分支与循环—条件操作符 与逻辑操作符(3)

三、C语言中的分支与循环—switch语句(4)分支结构 完


本章循环结构的学习内容如下:

三、C语言中的分支与循环—while循环 (5)

三、C语言中的分支与循环—for循环 (6)

三、C语言中的分支与循环—do-while循环 (7)

三、C语言中的分支与循环—break和continue语句(8)循环结构 完  


接下来我们开始for循环的学习,为什么有了while循环还要引入for循环呢?

  • for 循环:由于它将所有循环相关的元素(初始化、条件、更新)封装在一个语句中,因此通常更容易阅读和理解,特别是对于迭代过程。
  • while 循环:可能需要在循环体外初始化变量,在循环体内更新变量。这可能使得跟踪循环的状态和控制变量更加困难。

 我们一起来看看for循环是怎样工作的吧!

1.基本语法

for 循环在C语言中是一种常用的循环控制结构,用于在已知循环次数的情况下重复执行一段代码。

for (初始化表达式; 循环条件表达式; 更新表达式) {// 循环体
}
  • 初始化表达式:在循环开始之前执行一次。通常用于初始化循环控制变量。
  • 循环条件表达式:在每次循环迭代之前评估。如果为真(非零),则执行循环体。
  • 更新表达式:在每次循环迭代后执行。通常用于更新循环控制变量。
  • 循环体:如果循环条件为真,则执行的代码块。

2.执行流程 

  1. 初始化:首先执行初始化表达式。
  2. 条件检查:评估循环条件表达式。如果为真,进入循环体;如果为假,退出循环。
  3. 执行循环体:执行循环体内的代码。
  4. 更新表达式执行:执行更新表达式。
  5. 回到步骤2:再次检查循环条件表达式。

 3.while循环和for循环的对比

4.代码示例 

1)使用 for 循环从1打印到10

#include <stdio.h>int main() {for (int i = 1; i <= 10; i++) {printf("%d\n", i);}return 0;
}

2)数组遍历

如何安全地输入数组,见二、C语言数据类型与变量(scanf和printf (4)完)scanf的安全用法

数组长度计算


数组遍历,我们首先需要知道数组的长度,再用“数组名[数组下标]”这种方法取出每一个元素

例如 初始化数组int arr[] = { 1, 2, 3, 4, 5 }; 我们想打印第一个元素,数组下标从0开始,即可以执行语句

int arr[] = { 1, 2, 3, 4, 5 }; 
printf("%d",arr[0]);

那么C语言中计算数组的元素个数的常见用法是:

int length = sizeof(arr) / sizeof(arr[0]);
  1. sizeof(arr):这部分计算整个数组 arr 在内存中占用的总字节数。

  2. sizeof(arr[0]):这部分计算数组中第一个元素的大小(字节数)。由于数组的所有元素都是同一类型,因此任何一个元素的大小都代表数组中每个元素的大小。

  3. 除法操作:将数组的总大小除以单个元素的大小,得到的结果就是数组中元素的数量。

arr是一个 int 类型的数组,每个 int 元素通常占用4个字节(这可能根据不同的系统和编译器而有所不同)。如果数组总共占用了40个字节,那么 sizeof(arr) / sizeof(arr[0]) 就是 40 / 4,结果是10,意味着这个数组有10个元素。

这种方法在计算静态数组(在编译时大小已知的数组)的长度时特别有用。但请注意,这种方法不适用于动态分配的数组(如使用 malloc 分配的数组)或指针,因为 sizeof 对于指针只会返回指针本身的大小,而不是它指向的内存区域的大小。动态数组我们以后再讨论。


遍历数组的代码如下: 

#include <stdio.h>
int main() {int arr[] = { 1, 2, 3, 4, 5 };//初始化一个数组int length = sizeof(arr) / sizeof(arr[0]);//整型变量lengthfor (int i = 0; i < length; i++) {printf("%d\n", arr[i]);}return 0;
}

我们看一下结果,数组元素被成功打印。 


5.代码练习题

计算1~100之间3的倍数的数字之和

解法1 

#include <stdio.h>
int main()
{int sum = 0;//初始化变量和for (int i = 0; i <= 100; i++){if (i % 3 == 0)sum += i;//如果i是3的倍数,就把i加进和里面}printf("%d", sum);return 0;
}

 结果如下:

优化解法

//如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
#include <stdio.h>
int main()
{int i = 0;int sum = 0;for(i=3; i<=100; i+=3){sum += i;}printf("%d\n", sum);return 0;
}

http://www.lryc.cn/news/274901.html

相关文章:

  • tolist()读取Excel列数据,(Excel列数据去重后,重新保存到新的Excel里)
  • ChatGPT大升级,文档图像识别领域迎来技术革新
  • 2023年全国职业院校技能大赛软件测试—测试报告模板参考文档
  • 【BCC动态跟踪PostgreSQL】
  • 汽车架构解析:python cantools库快速解析arxml
  • Vue 之 修饰符汇总
  • 如何通过内网穿透实现无公网IP远程访问内网的Linux宝塔面板
  • 综合跨平台全端ui自动化测试框架Airtest——AirtestIDE录制微信小程序脚本教学
  • 如何在ArcGIS Pro中指定坐标系
  • macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系”
  • [C#]使用OpenCvSharp实现二维码图像增强超分辨率
  • 优化|流形优化系列(一)
  • torch.where()函数
  • 盖子的c++小课堂——第二十三讲:背包问题
  • k8s安装hostPath方式存储的PostgreSQL15
  • 51单片机之按键和数码管
  • 【Oracle】 - 数据库的实例、表空间、用户、表之间关系
  • ssm基于HTML5的交流论坛的设计与实现+vue论文
  • JDBC*
  • Zookeeper注册中心实战
  • 1-02VS的安装与测试
  • ctfshow——PHP特性
  • K8S陈述式资源管理
  • 详解Python内置函数 !!!
  • 使用Vue3 + Vite创建uni-app项目(Webstorm)
  • 【js】js实现多个视频连续播放:
  • 使用openssl 生成pfx格式证书时报错:unable to load certificates
  • 微信小程序 分享按钮 监听用户分享成功
  • 数据结构-怀化学院期末题
  • 跟cherno手搓游戏引擎【1】:配置与入口点