全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)(一)

news/2024/12/27 11:13:10/

在C++编程中,顺序结构和分支结构是两种基本的控制流结构,其中顺序结构是一种最简单、最基本的控制结构,即代码按照从上到下的顺序逐行执行,每个语句按照顺序执行,一条语句执行完再执行下一条语句,依次执行所有的操作步骤,不遗漏、不重复。分支结构由条件判断和分支语句块构成,允许程序根据某些条件选择不同的执行路径。

在C++编程中,循环结构(也被称为重复结构)是一种重要的控制流机制,它允许程序中的某一条或某一组语句(被称为循环体)按照指定的条件重复执行若干次。这种结构极大地提高了代码的效率和可读性,尤其是在处理需要重复执行的任务时。

假设在考试中,一个考场30个座位,需要为这30个学生安排具体座位,学生从1号开始依次增加到30号结束,例如1号学生坐1号座位,2号学生坐2号座位……以此类推,需要编写程序为每个学生打印出座位号,那么需要输出30次,具体程序如下:


#include<bits/stdc++.h>
using namespace std;
int main() {cout<<"No.1 student: Your seat number is : 1"<<endl;cout<<"No.2 student: Your seat number is : 2"<<endl;……cout<<"No.30 student: Your seat number is : 30"<<endl; return 0;
}

这样需要30条输出语句,这30条语句除了数字不一样之外,其他内容都是一样的,这样太麻烦了,想要解决这个问题,就和后文中的循环语句息息相关,接下来介绍for循环。

一、循环结构的基本概念

循环体:这是循环结构中重复执行的代码块。在C++中,循环体通常被包含在大括号 {} 内。

循环条件:这是决定循环是否继续执行的条件。只要条件为真(非零),循环就会继续;一旦条件变为假(零),循环就会终止。

循环变量:这通常是在循环中用于跟踪执行次数的变量。在每次循环迭代中,循环变量的值都会根据循环的类型(如for循环中的递增或递减操作)进行更新。

for循环:

在实际应用中,如果重复执行相同的操作而且次数固定,就可以用for循环语句来实现。它允许指定循环的初始条件、循环变量条件和循环变量的更新方式。for循环的语法如下:


for (循环变量初始化表达式; 循环变量条件; 循环变量更新) {// 循环体
}

for循环的执行过程:首先执行初始化表达式,紧接着判断循环条件的值,如果为真,则执行循环体(花括号里面的语句),执行完循环体,执行循环变量更新,循环变量更新执行完,再重复执行循环条件,如果循环条件的值为假,则for循环结束,执行for语句之后的内容。由此可见,初始表达式仅执行一次,根据循环条件的取值循环体以及循环变量更新语句可以多次执行。

以下面的程序为例来解释for语句的格式:


for(int i=1;i<=30;i++){cout<<"No."<<i<<" student: Your seat number is : "<<i<<endl;
}

首先执行初始化表达式"int i=1",定义了一个整型变量i,并且进行初始化为1,紧接着执行循环条件i<=30(由于有30个学生,所以学生的编号不能超过30),即使用i<=30设置继续执行的条件,一旦i>30,for循环语句就结束了,当i=1时,i<=30,循环条件为真,执行循环体里面的语句,输出1号学生的座位号,紧接着执行循环变量更新:i++,i的值增加1,i的值变为2,紧接着执行循环条件2<=30为真执行循环体,输出2号学生的座位号,执行i++,i变为3,……,如此反复执行,直到i的值变为31,31<=30循环条件为假,就退出for循环了。

注意:如果循环体里面只有一条语句,那么可以将花括号省略(对于初学者来说一般不建议省略花括号,以免造成循环体语句的遗漏),那么for的语法格式还有另一种形式:


for (循环变量初始化表达式; 循环变量条件; 循环变量更新) 语句1;

所以上述例子可以写成:

for(int i=1;i<=30;i++)cout<<"No."<<i<<" student: Your seat number is : "<<i<<endl;

二、for循环基本应用:

for语句通过循环变量的初值,循环条件,循环变量更新来控制循环语句执行的次数。循环变量的主要作用是计数,除此之外,很多时候循环变量需要参与循环体的计算,以实现某种功能。

1、基本计数

例如,编程实现输出100个'*',可以用for循环语句表述为:


for(int i=1;i<=100;i++){cout<<'*';
}

该问题中,需要控制打印星号语句,即“cout<<'*';”执行100次就可以,还可以有其他的表述方法:


for(int i=100;i>=1;i--){cout<<'*';
}
for(int i=2;i<=200;i+=2){cout<<'*';
}

因此for 语句中循环初始表达式、循环条件和循环变量更新三部分内容的写法灵活多变,相互配合控制循环体语句执行的次数。在这个过程中,循环变量i只起到控制循环次数的作用。

实战训练1—求1-100的和

问题描述:

求 1+2+3+⋯+99+100 的值

输入格式:

输出格式:

一行一个整数,表示这100个数的和。

输入输出样例:

输入样例1

输出样例1

5050

问题分析:

题目要求1到100这100个数的和,首先定义一个和变量sum,通过for循环这100个数,从1到100,将这100个数累加到sum中即可,具体程序代码如下:


#include<bits/stdc++.h>
using namespace std;
int main(){int sum=0;//定义和变量并初始化为0 for(int i=1;i<=100;i++){//从1开始到100,依次对这100个数执行循环体里的内容 sum += i;//将数累加到sum中 }cout<<sum<<endl;//输出sum的值 return 0;
}

http://www.ppmy.cn/news/1558508.html

相关文章

人工智能的崛起:从机器学习到深度学习,再到计算机视觉

在科技迅速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经从科幻的想象&#xff0c;逐步成为改变社会的核心动力之一。从自动驾驶到智能语音助手&#xff0c;从医疗诊断到推荐系统&#xff0c;人工智能技术的应用场景无处不在。在这些技术背后&#xff0c;机器…

Elasticsearch-脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对于其他脚本高出几倍的性…

Llama3.370B超越GPT-4o和Claude3.5 Sonnet

AI领域日新月异&#xff0c;最近AI 领域发生了太多事情&#xff0c;本文就语言大模型Llama 3.3 70B、GPT-4o 和 Claude 3.5 Sonnet进行对比。 12月7日&#xff0c;Meta今年的最终AI模型将要来了。Meta12月6日发布了Llama 3.3&#xff0c;拥有700亿个参数&#xff0c;但其性能与…

springboot476基于vue篮球联盟管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统篮球联盟管理系统信息管理难度大&#xff0c;容错率低&am…

Cadence学习笔记 11 PCB中器件放置

基于Cadence 17.4&#xff0c;四层板4路HDMI电路 更多Cadence学习笔记&#xff1a;Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制Cadence学习笔记 5 四路HDMI原理图绘制Cadence学习笔记…

Elasticsearch 集群

集群结构 以三台物理机为例。在这三台物理机上&#xff0c;搭建了 6 个 ES 的节点&#xff0c;三个 data 节点&#xff0c;三个 master 节点&#xff08;每台物理机分别起了一个 data 和一个 master&#xff09;&#xff0c;3 个 master 节点&#xff0c;目的是达到&#xff0…

纯css 实现呼吸灯效果

开始效果 呼吸效果 实现代码 <div class"container"><div class"breathing-light"></div> </div><style>html,body {height: 100%;background-color: white;}.container {padding: 100px;}.container .breathing-light {wi…

MySQL为什么选择使用B+树作为索引结构?

1. 可以先分析B树的优势 矮胖&#xff1a; 随着数据量的增长&#xff0c;B树的高度增长不会太快&#xff0c;使得磁盘的I/O次数减少自平衡性&#xff1a; B树是一种自平衡的二叉树&#xff0c;在新增和删除节点会进行分裂合并操作&#xff0c;以保证树的平衡&#xff0c;删除效…