当前位置: 首页 > 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;
}

相关文章:

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

本章分支结构的学习内容如下&#xff1a; 三、C语言中的分支与循环—if语句 (1) 三、C语言中的分支与循环—关系操作符 (2) 三、C语言中的分支与循环—条件操作符 与逻辑操作符(3) 三、C语言中的分支与循环—switch语句&#xff08;4&#xff09;分支结构 完 本章循环结构的…...

tolist()读取Excel列数据,(Excel列数据去重后,重新保存到新的Excel里)

从Excel列数据去重后&#xff0c;重新保存到新的Excel里 import pandas as pd# 读取Excel文件 file r"D:\\pythonXangmu\\quchong\\quchong.xlsx" # 使用原始字符串以避免转义字符 df pd.read_excel(file, sheet_namenameSheet)# 删除重复值 df2 df.drop_duplica…...

ChatGPT大升级,文档图像识别领域迎来技术革新

​写在前面ChatGPT迎来重大升级冲击与机遇并存​大模型时代的思考与探索■ 像素级OCR统一模型- UPOCR■ OCR大一统模型- SPTS v3■ 文档识别分析LLM应用 写在最后问卷抽奖 ​写在前面 2023 年 12 月 31 日第十九届中国图象图形学学会青年科学家会议在广州召开&#xff0c;该会…...

2023年全国职业院校技能大赛软件测试—测试报告模板参考文档

ERP(资源协同)管理平台测试报告 目录 ERP(资源协同)管理平台测试报告 1. 概述...

【BCC动态跟踪PostgreSQL】

BPF Compiler Collection (BCC)是基于eBPF的Linux内核分析、跟踪、网络监控工具。其源码存放于GitCode - 开发者的代码家园 想要监控PostgreSQL数据库的相关SQL需要在编译PostgreSQL的时候开启dtrace。下文主要介绍几个和PostgreSQL相关的工具,其他工具可根据需求自行了解。 …...

汽车架构解析:python cantools库快速解析arxml

文章目录 前言一、安装cantools二、官方说明文档三、cantools方法1、解析message的属性2、解析pdu中的signals3、根据message查找signals4、报文组成bytes 四、总结 前言 曾经有拿cantools来解析过dbc&#xff0c;用得比较浅&#xff0c;不知道可以用来解析arxml。最近有个需求…...

Vue 之 修饰符汇总

一、简介 在Vue中&#xff0c;修饰符是一种特殊的语法&#xff0c;用于修改指令或事件绑定的行为&#xff0c;它们以点号&#xff08;.&#xff09;的形式添加到指令或事件的后面&#xff0c;并可以改变其默认行为或添加额外的功能&#xff0c;如&#xff1a;禁止事件冒泡、数…...

如何通过内网穿透实现无公网IP远程访问内网的Linux宝塔面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。…...

综合跨平台全端ui自动化测试框架Airtest——AirtestIDE录制微信小程序脚本教学

前言 有在自动化测试领域的小伙伴应该都知道&#xff0c;app和小程序自动化这一类的自动化测试在实际操作中有时候很棘手让人心烦&#xff0c;动不动就是用appium写代码脚本维护什么的&#xff0c;不仅步骤繁琐&#xff0c;环境配置方面也是繁琐无比&#xff0c;动不动就与客户…...

如何在ArcGIS Pro中指定坐标系

在进行制图的时候&#xff0c;为了实现某些特定的效果&#xff0c;需要指定特定的坐标系&#xff0c;但是现有的数据可能不是所需要的坐标系&#xff0c;这时候就需要对现有的数据坐标系进行处理&#xff0c;这里为大家介绍一下ArcGIS Pro中指定坐标系的方法&#xff0c;希望能…...

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系”

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系” 网络问题系统时间问题镜像索引问题 网络问题 系统时间问题 镜像索引问题 恢复模式的 “实用工具 > 系统终端” 里执行如下 nvram IASUCatalogURLhttps://swscan.apple.com/content/catalogs/others/i…...

[C#]使用OpenCvSharp实现二维码图像增强超分辨率

【官方框架地址】 github.com/shimat/opencvsharp 【算法介绍】 借助于opencv自带sr.prototxt和sr.caffemodel实现对二维码图像增强 【效果展示】 【实现部分代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin…...

优化|流形优化系列(一)

简介 流形优化是非线性优化的一个分支&#xff0c;它主要关注在特定的几何结构下进行优化。在流形优化中&#xff0c;优化问题通常是在黎曼流形上进行的&#xff0c;而非欧几里得空间。黎曼流形是带有黎曼度量的流形&#xff0c;该度量为流形上的每个点都定义了一个内积。这种…...

torch.where()函数

在深度学习的实现中&#xff0c;处理条件逻辑是一项常见而重要的任务。PyTorch 提供了一个强大的函数 torch.where()&#xff0c;它使得基于条件的张量操作变得既简单又高效。本文将深入探讨 torch.where() 的用法&#xff0c;并通过示例展示它在不同场景中的应用。 什么是 to…...

盖子的c++小课堂——第二十三讲:背包问题

前言 又是一次漫长的更新&#xff08;我真不是故意的aaaaaaaaaaaaaaa&#xff09;&#xff0c;先不多说了&#xff0c;直接给我~坐下~说错了说错了&#xff0c;直接开始~ 背包问题----动态规划 背包问题&#xff08;knapsack problem&#xff09; 动态规划&#xff08;dyna…...

k8s安装hostPath方式存储的PostgreSQL15

1.配置 PostgreSQL 的 ConfigMap cat > postgres-configmap.yaml << EOF apiVersion: v1 kind: ConfigMap metadata:name: postgres-configlabels:app: postgresnamespace: dev data:POSTGRES_DB: postgresdbPOSTGRES_USER: postgresadminPOSTGRES_PASSWORD: admin12…...

51单片机之按键和数码管

51单片机之按键和数码管 ✍前言&#xff1a;♐独立按键&#x1f600;独立按键的原理&#x1f600;软件实现按键控制LED灯的亮灭 ♐数码管&#x1f60a;数码管显示数字或者字母的原理&#x1f409;共阳极数码管&#x1f409;共阴极极数码管&#x1f409;4位1体数码管 &#x1f6…...

【Oracle】 - 数据库的实例、表空间、用户、表之间关系

Oracle是一种广泛使用的关系型数据库管理系统&#xff0c;它具有高性能、高可靠性、高安全性等特点。1Oracle数据库的结构和组成是一个复杂而又有趣的话题&#xff0c;本文将介绍Oracle数据库的四个基本概念&#xff1a;数据库、实例、表空间和用户&#xff0c;以及它们之间的关…...

ssm基于HTML5的交流论坛的设计与实现+vue论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…...

JDBC*

*JDBC数据库连接步骤 1.将JDBC驱动的jar添加到项目的依赖中。 2.加载JDBC驱动 例如&#xff1a; Class.forName("com.mysql.jdbc.Driver"); 3.连接数据库 例如&#xff1a; Connection con DriverManager.getConnection(URL,us…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...