循环结构(一)——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,每次增量为2
		cout << 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分别偶数和,奇数和,初始化为0
	for (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.mfbz.cn/a/796650.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

转盘输入法

简介 转盘输入法&#xff0c;给你的聊天加点新意。它不用常见的九宫格或全键盘&#xff0c;而是把字母摆在圆盘上&#xff0c;一滑一滑&#xff0c;字就出来了&#xff0c;新鲜又直接。 触摸屏版本 当触屏输入法启动时&#xff0c;与200X年流行的按键手机相比&#xff0c;两者…

Profibus_DP转ModbusTCP网关模块连马保与上位机通讯

Profibus转ModbusTCP网关模块&#xff08;XD-ETHPB20&#xff09;广泛应用于工业自动化领域。例如&#xff0c;可以将Profibus网络中的传感器数据转换为ModbusTCP协议&#xff0c;实现数据的实时监控和远程控制。本文介绍了如何利用Profibus转ModbusTCP网关&#xff08;XD-ETHP…

【安装记录】:安装破解 ideaIU-2024.1.4

1、官网下载安装包&#xff1a; https://www.jetbrains.com/idea/download/?sectionwindows 2、按照下图操作&#xff1a; 然后&#xff0c;自定义重启即可 3、破解参考这篇文章&#xff1a;https://www.exception.site/article/1727

java版的上门家政系统和PHP版的上门家政有什么区别?

Java版的上门家政系统和PHP版的上门家政系统主要在以下几个方面存在区别&#xff1a; 1. 开发语言和特性 Java版&#xff1a;基于Java语言开发&#xff0c;Java是一种编译型语言&#xff0c;具有面向对象、跨平台、高性能等特点。Java代码在编写后需要通过Java虚拟机&#xff…

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

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

Goland 通道

channel通道 目录 channel通道 channel介绍 channel基本使用 有缓存通道和无缓存通道的区别 通道的初始化&#xff0c;写入数据到通道&#xff0c;从通道读取数据及基本的注意事项 channel的关闭和遍历 channel的关闭 为什么关闭 如何优雅地关闭通道 channel的遍历 chan…

STM32智能仓储管理系统教程

目录 引言环境准备晶智能仓储管理系统基础代码实现&#xff1a;实现智能仓储管理系统 4.1 数据采集模块 4.2 数据处理与决策模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;仓储管理与优化问题解决方案与优化收尾与总结 1. 引言 智能仓储管理系统…

通过git将文件push到github 远程仓库

1.先git clone 代码地址 git clone htttp://github.com/用户名/test.git 2. 添加文件 例如&#xff1a;touch 1.txt 3.将文件添加到暂存区 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.与远程仓库建立关联 git remote add 远程仓库名 远程仓库…

uniapp内置组件scroll-view案例解析

参考资料 文档地址&#xff1a;https://uniapp.dcloud.net.cn/component/scroll-view.html 官方给的完整代码 <script>export default {data() {return {scrollTop: 0,old: {scrollTop: 0}}},methods: {upper: function(e) {console.log(e)},lower: function(e) {cons…

computed计算属性用法及方法对比

模板中的插值表达式虽然方便&#xff0c;但当要写复杂逻辑时就会变得臃肿&#xff0c;难以维护&#xff0c;遇上复杂逻辑时&#xff0c;推荐使用计算属性来描述以响应式状态的复杂逻辑。这里我们做个对比&#xff0c;先用表达式的方法进行计算&#xff0c;先把页面写好&#xf…

centos单机配置多个内网IP地址

centos单机配置多个内网IP地址 引配置1. 查看当前网络IP配置2. 打开网络配置目录3. 设置静态IP4. 编辑ifcfg-eno1:15. 重启网络配置 引 同一个局域网&#xff0c;但是对接的多个子系统使用了不同的网段&#xff0c;如一个系统主机IP地址是192.168.10.1&#xff0c;另一个系统主…

昇思25天学习打卡营第8天|模型权重保存与加载

打卡 目录 打卡 模型的两种保存形式 Checkpoint 中间表示IR 模型保存与加载 模型权重保存-例1 模型权重加载-例1 模型权重保存-例2 模型权重加载-例2 模型权重文件的空间占用计算-例 模型的两种保存形式 Checkpoint 权重参数文件 中间表示IR 中间表示&#xff08;…

罗技K380无线键盘及鼠标:智慧互联,一触即通

目录 1. 背景2. K380无线键盘连接电脑2.1 键盘准备工作2.2 电脑配置键盘的连接 3. 无线鼠标的连接3.1 鼠标准备工作3.2 电脑配置鼠标的连接 1. 背景 有一阵子经常使用 ipad&#xff0c;但是对于我这个习惯于键盘打字的人来说&#xff0c;慢慢在 ipad 上打字&#xff0c;实在是…

【人工智能】-- 迁移学习

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f349;迁移学习 &#x1f348;基本概念 &#x1f34d;定义 &#x1f34c;归纳迁移学习&#xff08;Induct…

jenkins系列-01.docker安装jenkins

进入官网&#xff1a;https://www.jenkins.io/ 使用LONG term support版本&#xff1a;2.387.1 docker pull jenkins/jenkins:2.387.1-lts 拉取镜像&#xff1a; 编写docker-compose文件&#xff1a; 启动jenkins: 查看启动日志&#xff1a; 默认生成的密码&#xff1a;…

初阶数据结构速成

本篇文章算是对初阶数据结构的总结&#xff0c;内容较多&#xff0c;请耐心观看 基础概念部分 顺序表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构&#xff0c;常⻅的线性表&#xff1a;…

从概念到完成:Midjourney——设计思维与AI技术的完美结合

文章目录 本文来自 Python学研大本营 作者 学研君 去年 AI 爆火的时候&#xff0c;学研君也赶时髦用上了 Midjourney。平时用它生成图片&#xff0c;感觉生成的图片好看&#xff0c;比上网四处找图更省时省事&#xff0c;更合心意&#xff0c;还不用担心版权问题。 给大家看一下…

Vue3 引入Vanta.js使用

能搜到这篇文章 想必一定看过demo效果图了吧 示例 Vanta.js - Animated 3D Backgrounds For Your Website (vantajs.com) 1. 引入 在根目录 index.html中引入依赖 <script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></sc…

JVM系列 | 垃圾收集算法

JVM系列 | 垃圾收集算法 文章目录 前言如何判断对象已"死"&#xff1f;引用计数法可达性分析算法可达性分析2.0版 | 引用的增强对象的消亡过程回收方法区主要回收目标&#xff1a;回收操作 垃圾收集算法分代收集理论 与 跨代引用假说分代收集理论跨带引用假说 垃圾收…

x-anylabeling打开后变成anylabeling且菜单缺失

有小伙伴应该遇到过&#xff0c;你输入python app.py去启动x-anylabeling&#xff0c;会出现找不到.xanylabelingrc的提示&#xff0c;同时C:\Users\用户名内会出现一个.anylabelingrc配置文件&#xff0c;此时你把它手动改为.xanylabelingrc再启动软件&#xff0c;软件启动了&…