循环结构(一)——for语句【互三互三】


文章目录

🍁 引言

🍁 一、语句格式

🍁 二、语句执行过程

🍁 三、语句格式举例

🍁四、例题

👉【例1】

🚀示例代码:

👉【例2】

【方法1】

🚀示例代码:

【方法2】

🚀示例代码:

👉【例3】

【方法1】

🚀示例代码:

【方法2】

🚀示例代码:

👉【例4】

【分析】

🚀示例代码:

【说明】

🍁总结 

🍁备注


🚀欢迎互三👉程序猿方梓燚 💎💎
🚀所属专栏:C++教程💎

🚀关注博主,后期持续更新系列文章

🚀如果有错误感谢请大家批评指出,及时修改

🚀感谢大家点赞👍收藏评论✍ 

 

 

🍁 引言

  • 在 C++的编程世界中,循环结构如同一个个精巧的齿轮,驱动着程序高效而有序地运行。其中,for 语句无疑是最为常用和强大的循环工具之一。

  • 当我们面对需要重复执行的任务时,for 语句宛如一位可靠的伙伴,为我们提供了简洁、灵活且精确的控制方式。它使得我们能够有条不紊地处理大量的数据,执行重复性的操作,从而节省时间和精力,提高编程的效率。

  • 无论是遍历数组中的元素、计算一系列数值的总和,还是实现复杂的迭代算法,for 语句都展现出了其独特的魅力和强大的功能。

  • 通过深入理解和熟练运用 for 语句,我们将开启编程效率提升的大门,能够更加优雅地解决问题,构建出更为强大和高效的 C++程序。

  • 接下来,让我们一同深入探索 for 语句的奥秘,领略其在 C++编程中的精彩表现。

🍁 一、语句格式

格式1:

for(控制变量初始化表达式;条件表达式;增量表达式)语句1;

说明:语句1是for循环语句的循环体,它将在满足条件的情况下被重复执行。

格式2:

for(控制变量初始化表达式;条件表达式;增量表达式){语句1;语句2;…………
}

说明:循环体部分由多个语句构成,应由一对花括号括起来,构成一个语句块的形式

程序风格提示:写for循环语句时,循环体的语句相对于for缩进两格。

🍁 二、语句执行过程

for语句的执行过程可由以下4步来描述。

(1)执行“控制变量初始化语句”,使控制变量获得一个初值。

(2)判断控制变量是否满足“条件表达式”,若满足条件则执行一遍循环体,否则结束整个for语句,继续执行for循环下面的句子。

(3)根据增量表达式,计算出控制变量所得到的新值

(4)自动转到第(2)步。

🍁 三、语句格式举例

(1)将控制变量从1变到100,增量为1

for(i=1;i<=100;++i)

(2)将控制变量从100变到1,增量为-1

for(i=100;i>=1;--i)

(3)控制变量从7变到77,增量为7  

for(i=7;i<=77;i+=7)

(4)控制变量从20变到2,增量为-2

for(int i=20;i>=2;i-=2)

(5)按所示数列改变控制变量值:99、88、77、66、55、44、33、22、11、0,增量为-11

for(int j=99;j>=0;j-=11)

(6)控制变量i和j共同进行循环控制,i从1变到99,j从2变到100,增量均为2。

 

for(int i=1,j=2;i<=99&&j<=100;i+=2,j+=2)

需要说明的是:可以在for循环“ 控制变量初始化语句”中声明变量(如上面最后3个例子),这些变量只在for循环结构中有效,离开了该for结构,变量就无效了。

🍁四、例题

👉【例1】

利用for循环,计算输出1+2+…+100的和

🚀示例代码:
#include <iostream>
using namespace std;
int main () {int sum = 0;for (int i = 1; i <= 100 ; ++i) {sum += i;  //i初始值1,终值为100,每次增量为1}cout << sum;return 0;
}
👉【例2】

输出1—100之间所有偶数。

【方法1】

可以想到对于1-100之间的100个数字i,直接重复进行判断,如果i是偶数,则输出i的值。

🚀示例代码:
#include <iostream>
using namespace std;
int main() {for (int i = 1; i <= 100; i++) { //对于1至100之间的每个数,都重复操作if (i % 2 == 0) { //如果i为偶数,则输出i的值cout << i << " ";} }return 0;
}

程序中,将1-100之间的所有数字都列举出来,然后一一判断,符合偶数条件的,就输出。这种思想,本质上是穷举。穷举法保证在求解的过程中,所有可能解都会判断到,不会丢解。当然缺点就是有时候效率不高。

【方法2】

在上述分析的基础上,再进一步分析:我们都知道,相邻偶数之间的差值为2,所以,我们还可以设置变量的初值为2,增量为2的for循环,使得循环次数减少为50次。

🚀示例代码:
#include <iostream>
using namespace std;
int main() {for (int i = 2; i <= 100; i += 2) { //i初值2,终值100,每次增量为2cout << i << " ";      //输出i的值}return 0;
}
👉【例3】

利用for循环,分别计算1—100中奇数的和、偶数的和。

【方法1】

根据例4.2的分析,很容易找到所有的偶数和奇数,继而计算其和。假设用变量sum1和sum2分别存放偶数与奇数和,累加就是在sum1或sum2的基础上,加上一个数字,改变累加变量的值;再加上一个数字,改变累加变量的值;......;如此重复下去。

🚀示例代码:
#include <iostream>
using namespace std;
int main() {int i, sum1 = 0, sum2 = 0; //sum1、sum2分别偶数和,奇数和,初始化为0for (i = 1; i <= 100; i++) { //i取1至100之间的每个整数,都重复操作if (i % 2 == 0) {sum1 += i;      //偶数累加到sum1中} else {sum2 += i;                 //奇数累加到sum2中}}cout << sum1 << "  " << sum2;     //输出偶数和、奇数和return 0;
}
【方法2】

偶数从2开始每次递增2,奇数从1开始每次递增2,for语句的循环变量初始化和循环变量增量两部分都可以使用逗号语句序列。

🚀示例代码:
#include <iostream>
using namespace std;
int main() {int i, j, sum1 = 0, sum2 = 0;for (i = 2, j = 1; i <= 100; i += 2, j += 2)  { //生成偶数和奇数的初始值sum1 += i;                     //偶数i累加到sum1中sum2 += j;                     //奇数j累加到sum2中}cout << sum1 << "  " << sum2;    //输出偶数和、奇数和return 0;
}
👉【例4】

利用for循环计算n!的值。

分析

n!=1*2*3…*n

🚀示例代码:
#include <cstdio>
using namespace std;
int main () {long long s;       int n;             //n不能定义为long long,否则for语句死循环s = 1;scanf("%d", &n);for (int i = 1; i <= n ; ++i) //若s定义为int,当n=13时s的值就溢出了s *= i;printf("%lld\n", s);      //低版本也可用printf("%I64d\n",s)return 0;
}
【说明】
  • 当n>=13时,s值超过了int类型的表示范围。还有一种比int更大的类型,称为long long,它的表示范围是-263~263-1,比-1019~1019略窄,而我们一直使用的int范围是-231~231-1,只比-2*109~2*109略宽。    
  • 输入输出long long也可以借助于printf和scanf语句,但对应的占位符却是和平台与编译器相关的:在linux中,gcc很统一的用%lld;在windows中,MinGW的gcc和VC6可用%I64d;高版本编译器下windows可以使用%lld。

🍁总结 

有不懂的地方可以si我,和我一起学习C++吧。

🍁备注

还没有下载DEV-C++的小伙伴们可以私我拿到免费安装包

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

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

相关文章

Cartographer重入门到精通(二):运行作者demo及自己的数据集

在demo数据包上运行cartographer 现在Cartographer和Cartographer的Ros包已经都安装好了&#xff0c;你可以下载官方的数据集到指定的目录&#xff08;比如在Deutsches Museum用背包采集的2D和3D 数据&#xff09;&#xff0c;然后使用roslauch来启动demo。 注&#xff1a;la…

IO半虚拟化-Virtio学习笔记

参考&#xff1a;《深入浅出DPDK》及大佬们的各种博客 Virtio简介&运行环境 Virtio 是一种用于虚拟化环境中的半虚拟化 I/O 框架&#xff0c;目的是在虚拟机和主机之间提供一种高效的 I/O 机制。关于什么是半虚拟化和全虚拟化&#xff1a;见SR-IOV学习笔记。 YES&#xf…

PDMS二次开发(二十二)——关于1.0.3.1版本升级内容的说明

目录 1.更新内容介绍2.效果演示3.关于重构自动添加焊口功能的说明3.1错误示例 3.问题交流1.创建焊口提示失败2.程序崩溃 1.更新内容介绍 在添加焊口之前先清除当前branch已有焊口&#xff1b;显示清除焊口的个数和添加焊口的个数&#xff1b;重构了自动添加焊口功能&#xff0…

值得关注的数据资产入表

不错的讲解视频&#xff0c;来自&#xff1a;第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办-20240708_哔哩哔哩_bilibili

《A++ 敏捷开发》- 10 二八原则

团队成员协作&#xff0c;利用项目数据&#xff0c;分析根本原因&#xff0c;制定纠正措施&#xff0c;并立马尝试&#xff0c;判断是否有效&#xff0c;是改善的“基本功”。10-12章会探索里面的注意事项&#xff0c;13章会看两家公司的实施情况和常见问题。 如果已经获得高层…

java中的String 以及其方法(超详细!!!)

文章目录 一、String类型是什么String不可变的原因(经典面试题)String不可变的好处 二、String的常用构造形式1.使用常量串构造2.使用newString对象构造3.字符串数组构造 三、常用方法1. length() 获取字符串的长度2. charAt() 获取字符串中指定字符的值 (代码单元)3. codePoin…

水的几个科学问题及引发的思考

水的几个科学问题及引发的思考 两个相同的容器A和B&#xff0c;分别装有同质量的水&#xff0c;然后&#xff0c;在A容器中加入水&#xff0c;在B容器中加入冰&#xff0c;如果加入水和冰的质量相同。问&#xff0c;容器B的水位将与容器A的水位相同吗&#xff08;假设冰未融化时…

【ZooKeeper学习笔记】

1. ZooKeeper基本概念 Zookeeper官网&#xff1a;https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop项目中的一个子项目&#xff0c;是一个树形目录服务Zookeeper翻译过来就是动物园管理员&#xff0c;用来管理Hadoop&#xff08;大象&#xff09;、Hive&…

AR0132AT 1/3 英寸 CMOS 数字图像传感器可提供百万像素 HDR 图像处理(器件编号包含:AR0132AT6R、AR0132AT6C)

AR0132AT 1/3 英寸 CMOS 数字图像传感器&#xff0c;带 1280H x 960V 有效像素阵列。它能在线性或高动态模式下捕捉图像&#xff0c;且带有卷帘快门读取。它包含了多种复杂的摄像功能&#xff0c;如自动曝光控制、开窗&#xff0c;以及视频和单帧模式。它适用于低光度和高动态范…

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同&#xff0c;有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …

九盾安防:如何调控叉车限速器的报警速度呢

在繁忙的物流仓储和制造业环境中&#xff0c;叉车是不可或缺的搬运设备。然而&#xff0c;其高速行驶也带来了潜在的安全隐患。为了确保作业人员和货物的安全&#xff0c;又车限速器的设置显得尤为关键。那么&#xff0c;如何调控叉车限速器的报警速度呢? 叉车限速器的速度调整…

复制vmware虚拟机文件并改名(文件名使用python替换)得到一台新的虚拟机

文章目录 需求实验复制文件夹并重命名使用python将所有文件名“WinSer2022”字符替换成“wingetmac”修改虚拟机配置文件&#xff08;.vmx&#xff09;打开新的虚拟机成功 需求 将已有的Winser2022虚拟机复制成wingetmac并开机 实验 复制文件夹并重命名 将"WinSer2022…

了解并缓解 IP 欺骗攻击

欺骗是黑客用来未经授权访问计算机或网络的一种网络攻击&#xff0c;IP 欺骗是其他欺骗方法中最常见的欺骗类型。通过 IP 欺骗&#xff0c;攻击者可以隐藏 IP 数据包的真实来源&#xff0c;使攻击来源难以知晓。一旦访问网络或设备/主机&#xff0c;网络犯罪分子通常会挖掘其中…

1559. 二维网格图中探测环

1559. 二维网格图中探测环 给你一个二维字符网格数组 grid &#xff0c;大小为 m x n &#xff0c;你需要检查 grid 中是否存在 相同值 形成的环。 一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径。对于一个给定的格子&#xff0c;你可以移动到它上、下、左、右…

【Qt 初识】QPushButton 的详解以及 Qt 中的坐标

文章目录 1. Qt 中的信号槽机制 &#x1f34e;2. 通过图形化界面的方式实现 &#x1f34e;3. 通过纯代码的方式实现按钮版的HelloWorld &#x1f34e;4. 设置坐标 &#x1f34e; 1. Qt 中的信号槽机制 &#x1f34e; 》&#x1f427; 本质就是给按钮的点击操作&#xff0c;关联…

GuLi商城-商品服务-API-品牌管理-OSS获取服务端签名(续)

如何进行服务端签名直传_对象存储(OSS)-阿里云帮助中心 gulimall-third-party服务的代码: package com.nanjing.gulimall.thirdparty.controller;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.BinaryUtil; impor…

Linux开发:Fuse介绍

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持&#xff0c;开发者只需要根据fuse提供的接口实现具体的文件操作时所对应的回调函数&#xff0c;就可以实现一个文件系统。由于其主要实现代码位于用户空间中&#xff0c;因此不需要重新编译内…

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二)

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数&#xff08;二&#xff09; 0. 引言1. 关于m_geodesic2. 关于mygrid_sand23. 结语 0. 引言 通过前面篇节已经将m_map绘图工具中大多绘图有关的函数进行过介绍&#xff0c;已经能够满足基本的绘图需求&#xff0c;本节…

个人倒计时页面源码,实用倒计时单页源码

一、源码描述 这是一款非常实用的个人倒计时页面&#xff0c;支持设置未来一年时间&#xff0c;支持设置背景音乐&#xff0c;支持自定义下拉页面&#xff0c;点击向下箭头查看。 二、源码截图 三、源码下载

深入探讨【C++容器适配器】:现代编程中的【Stack与Queue】的实现

目录 一、Stack&#xff08;栈&#xff09; 1.1 Stack的介绍 1.2 Stack的使用 1.3 Stack的模拟实现 二、Queue&#xff08;队列&#xff09; 2.1 Queue的介绍 2.2 Queue的使用 2.3 Queue的模拟实现 三、容器适配器 3.1 什么是适配器 3.2 为什么选择deque作为stack和…