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

news2024/9/20 6:38:33


文章目录

🍁 引言

🍁 一、语句格式

🍁 二、语句执行过程

🍁 三、语句格式举例

🍁四、例题

👉【例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.coloradmin.cn/o/1923694.html

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

相关文章

无人机运营合格证及无人机服务资质认证详解

一、运营合格证 无人机运营合格证是无人机运营单位或个人在特定区域内从事无人机运营活动的法定凭证。该证书由相关部门根据无人机运营单位的资质、技术能力和管理水平等综合因素进行审批和颁发。获得运营合格证的单位或个人需严格遵守国家相关法规和规定&#xff0c;确保无人…

3-2 多层感知机的从零开始实现

import torch from torch import nn from d2l import torch as d2lbatch_size 256 # 批量大小为256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size) # load进来训练集和测试集初始化模型参数 回想一下&#xff0c;Fashion-MNIST中的每个图像由 28 28 784…

【考研408操作系统】最容易理解的知识体系-文件管理-面向计算机管理

苏泽 “弃工从研”的路上很孤独&#xff0c;于是我记下了些许笔记相伴&#xff0c;希望能够帮助到大家 本篇内容续写上一篇的【考研408&操作系统】最容易理解的知识体系-文件管理-面向人类管理 这一篇将站在计算机如何管理好文件的角度去梳理这一章节的知识点 目录 本…

.欧拉函数.

先介绍欧拉函数&#xff1a; 贴一张 证明&#xff1a; 这里利用容斥原理来进行证明&#xff1a;若要求1~N当中与N互质的个数&#xff0c;则应在1~N当中去除N的质因数的倍数&#xff0c;因为既然是因数&#xff0c;那么一定不与N互质&#xff0c;既然是N的因数&#xff0c;那么…

初识Laravel(Laravel的项目搭建)

初识Laravel&#xff08;Laravel的项目搭建&#xff09; 一、项目简单搭建&#xff08;laravel&#xff09;1.首先我们确保使用国内的 Composer 加速镜像&#xff08;[加速原理](https://learnku.com/php/wikis/30594)&#xff09;&#xff1a;2.新建一个名为 Laravel 的项目&a…

gfast前端UI:基于Vue3与vue-next-admin适配手机、平板、pc 的后台开源模板

摘要 随着现代软件开发的高效化需求&#xff0c;一个能够快速适应不同设备、简化开发过程的前端模板变得至关重要。gfast前端UI&#xff0c;基于Vue3.x和vue-next-admin&#xff0c;致力于提供这样一个解决方案。本文将深入探讨gfast前端UI的技术栈、设计原则以及它如何适配手机…

(补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式

文章目录 前言一、进制1 逢几进一2 常见进制在java中的表示3 进制中的转换(1)任意进制转十进制(2)十进制转其他进制二、计算机中的存储1 计算机的存储规则(文本数据)(1)ASCII码表(2)编码规则的发展演化2 计算机的存储规则(图片数据)(1)分辨率、像素(2)黑白图与灰度…

Linux 复现Docker NAT网络

Linux 复现Docker NAT网络 docker 网络的构成分为宿主机docker0网桥和为容器创建的veth 对构成。这个默认网络命名空间就是我们登陆后日常使用的命名空间 使用ifconfig命令查看到的就是默认网络命名空间&#xff0c;docker0就是网桥&#xff0c;容器会把docker0当成路由&…

linux nethogs网络监控程序(端口监控、流量监控、上传流量、下载流量、进程监控进程网络)

文章目录 Nethogs 网络监控程序详解1. 引言2. Nethogs 的安装与运行2.1 安装 Nethogs- **Debian/Ubuntu**- **Fedora**- **Arch Linux** 2.2 运行 Nethogs 3. Nethogs 的使用详解3.1 基本界面- **PID**&#xff1a;进程的 ID。- **用户**&#xff1a;运行该进程的用户。- **程序…

【Linux网络】数据链路层【上】{初识数据链路层/以太网/路由表/MAC地址表/ARP表/NAT表}

文章目录 1.初识数据链路层2.认识以太网2.0前导知识以太网帧和MAC帧CMSA/CD以太网的最小帧长限制是64字节IP层和MAC层 2.1以太网帧格式 3.预备知识计算机网络通信以太网和wifi路由表/MAC地址表/ARP表/NAT表/ACL表 用于同一种数据链路节点的两个设备之间进行信息传递。 1.初识数…

美团一面,你碰到过CPU 100%的情况吗?你是怎么处理的?

本文主要分为三部分 分析一下CPU 100%的常见原因 CPU 100%如何排查 回答这个问题的一个参考答案 CPU被打满的常见原因 1. 死循环 在实际工作中&#xff0c;可能每个开发都写过死循环的代码。 死循环有两种&#xff1a; 在 while、for、forEach 循环中的死循环。 无限递…

期末成绩单怎么单独发给家长,这个小工具超简单!

随着期末考试的落幕&#xff0c;老师们再次迎来了成绩处理的高峰期。传统的成绩单分发方式不仅耗时&#xff0c;还容易出错。但如今&#xff0c;有了易查分小程序&#xff0c;这一过程变得简便而高效。 易查分小程序&#xff0c;一个专为教师和家长设计的便捷工具&#xff0c;让…

[ruby on rails]部署时候产生ActiveRecord::PreparedStatementCacheExpired错误的原因及解决方法

一、问题&#xff1a; 有时在 Postgres 上部署 Rails 应用程序时&#xff0c;可能会看到 ActiveRecord::PreparedStatementCacheExpired 错误。仅当在部署中运行迁移时才会发生这种情况。发生这种情况是因为 Rails 利用 Postgres 的缓存准备语句(PreparedStatementCache)功能来…

【Apache Doris】周FAQ集锦:第 10 期

【Apache Doris】周FAQ集锦&#xff1a;第 10 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户…

算法力扣刷题记录 四十五【110.平衡二叉树】

前言 二叉树篇继续 记录 四十五【110.平衡二叉树】 一、题目阅读 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3…

【鸿蒙学习笔记】尺寸设置・width・height・size・margin・padding・

官方文档&#xff1a;尺寸设置 目录标题 width&#xff1a;设置组件自身的宽度height&#xff1a;设置组件自身的高度size&#xff1a;设置高宽尺寸margin&#xff1a;设置组件的外边距padding&#xff1a;设置组件的内边距 width&#xff1a;设置组件自身的宽度 参数为Length…

【零基础】学JS之APIS第三天

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

10分钟快速了解神经网络(Neural Networks)

神经网络是深度学习算法的基本构建模块。神经网络是一种机器学习算法&#xff0c;旨在模拟人脑的行为。它由相互连接的节点组成&#xff0c;也称为人工神经元&#xff0c;这些节点组织成层次结构。 Source: victorzhou.com 神经网络与机器学习有何不同&#xff1f; 神经网络是…

电脑资料丢失不用慌,5招教你恢复数据

在数字化时代&#xff0c;电脑资料的安全与完整对我们而言至关重要。然而&#xff0c;生活中总有一些小插曲&#xff0c;如意外删除、系统故障或病毒攻击等&#xff0c;导致电脑上的重要资料消失得无影无踪。面对这种情况&#xff0c;我们往往感到焦虑和无助。今天&#xff0c;…

LabVIEW心电信号自动测试系统

开发了一种基于LabVIEW的心电信号自动测试系统&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现对心电信号的实时采集、分析和自动化测试。系统包括心电信号采集模块、信号处理模块和自动化测试模块&#xff0c;能够高效、准确地完成心电信号的测量与分析。 硬件系统…