for循环详解与实战技巧

目录

一、for循环语法

二、for循环执行流程

流程图表示:

三、for循环实践示例

示例:在屏幕上打印1~10的值

四、while循环与for循环对比

for循环和while循环都包含三个关键部分:

两者的主要区别在于代码组织方式:

五、练习题

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

基础实现:

优化版本(直接生成3的倍数,减少循环次数和判断):


一、for循环语法

for循环是C语言中最常用的循环结构,其基本语法形式如下:

for(表达式1; 表达式2; 表达式3)语句;  // 如果循环体包含多条语句,需使用大括号{}

各表达式的作用:

  • 表达式1:循环变量初始化(仅在循环开始时执行一次)

  • 表达式2:循环继续条件判断(每次循环前检查)

  • 表达式3:循环变量调整(每次循环后执行)


二、for循环执行流程

for循环的执行流程可以用以下步骤描述:

  1. 执行表达式1(初始化循环变量)

  2. 检查表达式2(循环条件):

    • 如果结果为真(非0),继续执行循环体

    • 如果结果为假(0),结束循环

  3. 执行循环体语句

  4. 执行表达式3(调整循环变量)

  5. 返回步骤2继续判断

流程图表示:

注意:在整个循环过程中,表达式1只执行一次,而表达式2、循环体和表达式3会重复执行。


三、for循环实践示例

示例:在屏幕上打印1~10的值

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

运行结果


四、while循环与for循环对比

for循环和while循环都包含三个关键部分:

  1. 循环变量初始化

  2. 循环继续条件判断

  3. 循环变量调整

两者的主要区别在于代码组织方式:

  • for循环:三个部分集中在一起,结构清晰,便于维护

  • while循环:三个部分分散在代码中,当代码量较大时可能不够直观

因此,在大多数情况下,特别是循环次数明确时,for循环是更优的选择。


五、练习题

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

基础实现:

#include <stdio.h>int main()
{int i = 0;int sum = 0;for(i = 1; i <= 100; i++){if(i % 3 == 0)sum += i;}printf("%d\n", 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;
}

        优化版本通过直接从3开始,每次增加3的方式,避免了不必要的循环迭代和条件判断,提高了代码效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92660.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

winform中的listbox实现拖拽功能

文章目录前言一、实现前言 winform中的listBox实现拖拽&#xff01; 一、实现 winform中的listbox实现拖拽只需要实现四个事件 1、准备两个listbox控件 其中listtarget&#xff0c;AllowDrop属性设置为True。 2、实现四个事件 2.1MouseDown //在 MouseDown 事件期间&#x…

用 Docker 安装并启动 Redis:从入门到实战

用 Docker 安装并启动 Redis&#xff1a;从入门到实战Redis 作为一款高性能的键值对数据库&#xff0c;在缓存、会话存储、消息队列等场景中被广泛应用。本文将详细介绍如何使用 Docker 快速安装和启动 Redis&#xff0c;包括基础配置、数据持久化以及容器管理等核心操作&#…

ansible学习第一天

一&#xff1a;ansible基础知识1.1 ansible的定义与工作原理简述ansible是一个自动化运维工具&#xff0c;用于执行自动化任务&#xff0c;包括像配置管理&#xff0c;应用部署&#xff0c;任务执行等等&#xff0c;本质上来说也是基础设施及代码工具&#xff0c;通过可读性较强…

Vue原理与高级开发技巧详解

Vue 的底层原理、高级用法、性能优化和生态整合 文章目录Vue 的底层原理、高级用法、性能优化和生态整合一、Vue 双向绑定原理深度剖析1. Vue 2 实现原理&#xff08;Object.defineProperty&#xff09;2. Vue 3 实现原理&#xff08;Proxy&#xff09;3. v-model 高级用法二、…

axios的封装

axios的封装 在src目录下新建文件夹utils工具类&#xff0c;文件夹里面新建http.js文件&#xff0c;如果项目涉及到多个基地址可以新建http2.js文件。 import axios from axios;/*** 后端*/// 创建axios实例 const http axios.create({// 1.接口基地址baseURL: http://192.168…

MariaDB 数据库管理与web服务器

MariaDB 数据库管理与WEB 服务器 介绍 MariaDB 数据库介绍 **数据库&#xff0c;是一个存放计算机数据的仓库。**这个仓库是按照一定的数据结构来对数据进行组织和存储的&#xff0c;我们可以通过数据库提供的多种方法来管理其中的数据。 数据结构&#xff0c;是指数据的组织形…

分治-归并-912.排序数组-力扣(LeetCode)

一、题目解析1、将数组排升序2、在不使用任何内置函数的情况下解决问题二、算法原理分治-归并合并两个有序数组1、双指针遍历两个合并数组2、将比较后的较小值放到新开数组中3、防止有指针未遍历完&#xff0c;特殊处理4、将nums中的元素还原三、代码示例vector<int> tmp…

网络安全初学者学习心得

看到你对网络安全学习的兴趣&#xff0c;我感到非常振奋&#xff01;这个领域既充满挑战又回报丰厚&#xff0c;作为初学者&#xff0c;理清学习内容和方向确实至关重要。下面我将结合多年的行业观察和指导经验&#xff0c;为你详细拆解网络安全初学者的学习内容并分享一些核心…

防火墙笔记优化版

一、防火墙的核心定义防火墙是一种基于预设安全策略&#xff0c;用于隔离内网与外网、控制网络流量的安全系统&#xff08;可分为软件系统或硬件系统&#xff09;。其核心作用包括&#xff1a;流量隔离&#xff1a;物理或逻辑分隔内网、外网及 DMZ 区域&#xff08;DMZ 为内网与…

vue3前端项目cursor rule

cursor rule是什么&#xff0c;以及怎么定义&#xff0c;看这个文章&#xff1a; cursor中定义cursor rules_cursor rules如何编写-CSDN博客 针对现有一个vue3的前端项目&#xff0c;写了一份cursor rule&#xff0c;可以作为参考&#xff0c;内容如下&#xff08;仅作为参考&…

基于51单片机红外遥控定时开关智能家电插座设计

1. 功能介绍 本设计是一款基于 STC8C52 单片机 的智能家电插座系统&#xff0c;集 红外遥控控制、定时开关控制、自动与手动模式切换、掉电数据保存、液晶显示、蜂鸣器提示 于一体&#xff0c;能够方便用户对家用电器进行精准的定时控制与远程操作。系统广泛适用于家用电器、办…

下一代防火墙组网方案

知识回顾&#xff1a;1.传统防火墙包括包过滤防火墙、应用网关防火墙、状态检测防火墙。2.包过滤防火墙工作在3、4层。3.包过滤防火墙特点&#xff1a;4.应用网关防火墙主要作用&#xff1a;①截取用户初始化连接请求&#xff0c;对用户进行认证&#xff1b;②通过ALG能让多通道…

WEB开发-第二十七天(PHP篇)

DW PHPStorm PhpStudy Navicat Premium DW : HTML&JS&CSS开发 PHPStorm : 专业PHP开发IDE PhpStudy &#xff1a;Apache MYSQL环境 Navicat Premium: 全能数据库管理工 变量覆盖安全&#xff1a; $GLOBALS&#xff1a;这种全局变量用于在PHP脚本中的任意位置访…

Lwip深度阅读-网络架构

LWIP网络协议栈详细介绍 本文的内容基本基于野火的LWIP手册&#xff0c;和LWIP源码撰写。 网络协议栈概述 从图片可以看出&#xff0c;网络协议栈采用分层架构&#xff0c;每一层都有特定的功能和协议。 TCP/IP协议分层模型数据封装过程MAC数据包 我使用wireShark抓包的时候&am…

嵌入式系统学习Day16(C语言中的位运算)

位运算二进制位的运算嵌入式:通过位运算 控制 硬件运算: 运算规则 & 与 一假则假 | 或 一真则真 ~ 非 真假相对 ^ 异或 相同为假 不同为真 << 左移 表示二进制位的移动 >> 右移 eg:int a 0x55; int b 0x33;0101 0101 //0x55 &am…

Endnote下载,导入曼大 harvard_manchester格式

下载endnote 并激活中国农业科技文献与信息服务平台&#xff0c;点击下载 下载harvard_manchester 格式 Harvard Manchester - Referencing guide at the University of Manchester - Subject guides at University of Manchester 双击打开第二步下载的安装包&#xff08;使用…

【Docker进阶实战】从多容器编排到集群部署

Docker进阶实战&#xff1a;从多容器编排到集群部署 当你已经熟悉Docker的基本操作后&#xff0c;面对的下一个挑战往往是&#xff1a;如何管理多个容器的协作&#xff1f;如何实现容器的集群化部署与扩展&#xff1f;如何保证服务的高可用&#xff1f; 一、Docker Compose&…

【Linux文件操作】文件操作系统调用

目录 一、文件创建&#xff08;creat 系统调用&#xff09;​ 1.1 函数原型 1.2 参数说明​ 1.3 返回值​ 1.4 使用示例 二、文件打开&#xff08;open 系统调用&#xff09;​ 2.1 函数原型 2.2 参数说明​ 2.3 返回值​ 2.4 使用示例 三、文件读写&#xff08;read 和 write …

FreeRTOS源码分析六:vTaskDelay vs xTaskDelayUntil任务延时

系列文章目录 FreeRTOS源码分析一&#xff1a;task创建&#xff08;RISCV架构&#xff09; FreeRTOS源码分析二&#xff1a;task启动&#xff08;RISCV架构&#xff09; FreeRTOS源码分析三&#xff1a;列表数据结构 FreeRTOS源码分析四&#xff1a;时钟中断处理响应流程 Free…

Linux学习-应用软件编程(fread/fwrite,流定义相关接口)

freadsize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 功能按块从文件读取数据&#xff0c;从文件中读 nmemb 个、每个 size 字节的元素&#xff0c;存入 ptr 指向的内存。参数- ptr &#xff1a;存储读取数据的内存首地址&#xff08;需提前分配足够…