当前位置: 首页 > news >正文

C++编程学习(第14天)

循环结构

循环结构主要由while语句、do...while语句和for语句构成。

while语句

while语句的一般形式为 while(表达式)语句

当指定的表达式为真(表达式为非0)时,执行while语句中的内嵌语句,即循环体。特点是先判断表达式,后执行语句,while循环成为当型循环。

使用while语句求1-100的和。

#include <iostream>
using namespace std;int main()
{int i = 1, sum = 0;while (i<=100){sum = sum + i;i++;}cout << "sum = " <<sum<< endl;
}//结果为:sum = 5050

需要注意的是,循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现。如果不用花括号,则while语句的范围只到while后面的第一个分号处。

在循环体中应有使循环体趋向于结束的语句,没有结束语句,循环将永不结束。

do...while语句

do...while语句的特点是先执行循环体,然后判断循环条件是否成立,一般形式为 do 语句 while(表达式);

其先执行一次指定的语句,即循环体,然后判别表达式,当表达式的值为真(非0)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。

使用do...while语句求1-100的和。

#include <iostream>
using namespace std;int main()
{int i = 1, sum = 0;do{sum = sum + i;i = i + 1;} while (i <= 100);cout << "sum = " << sum << endl;
}//结果为:sum = 5050
for语句

C++中的for语句使用最为广泛和灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。

for语句的一般形式为 for(表达式1;表达式2;表达式3)语句

执行过程为

1、先求解表达式1

2、求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后求解表达式3,循环继续,求解表达式2的值。

3、求解表达式2,若其值为假(值为0),则结束循环,执行for语句下面的一个语句。

for语句最容易理解的格式为 for(循环变量赋初值;循环条件;循环变量增值)语句

其中的语句就是循环体,可以是一个简单的语句,也可以是一个用花括号抱起来的复合语句。

需要注意的是

1、for语句的一般格式中的表达式1可以省略,此时应在for语句之前给循环变量赋初值,省略表达式1时,其后的分号不能省略。

2、如果表达式2省略,即不判断循环条件,循环无终止的执行下去,也就是认为表达式2始终为真。

3、表达式3也可以省略,但此时应另外设法保证循环能正常结束。

4、可以省略表达式1和表达式3,只保留表达式2,即只给循环条件。

5、表达式一般是关系表达式(如i<=100)或逻辑表达式(如a<b && x<y),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。

使用for语句求1-100的和。

#include <iostream>
using namespace std;int main()
{int sum = 0;for (int i = 1; i <= 100; i++) sum = sum + i;cout << "sum = " << sum << endl;
}//结果为:sum = 5050
循环的嵌套

一个循环体内又包含另一个完整的循环结构,成为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环

while循环、do...while循环和for循环可以互相嵌套

提前结束循环

有时需要在某种条件下使循环提早结束,这时可以用break语句和continue语句。

1、用break语句提前结束循环过程

一般格式为 bereak;

break语句用于循环体内,其作用是使流程从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。

需要注意的是,break语句只能用于循环语句和switch语句内,不能单独使用或用于其它语句中。

2、用continue语句提前结束本次循环

一般格式为 continue;

其作用为结束本次循环,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

区别:continue语句只结束本次循环,而不是终止整个循环的执行,而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

实例

1、用公式求圆周率Π的近似值:Π/4=1-1/3+1/5-1/7+...,直到最后一项的绝对值小于10的负七次方为止。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;int main()
{int s = 1;double n = 1, t = 1, pi = 0;while (fabs(t) > 1e-7){pi = pi + t;n = n + 2;s = -s;t = s / n;}pi = pi * 4;cout << "pi = " << setiosflags(ios::fixed) << setprecision(8) << pi << endl;return 0;
}//结果为: pi = 3.14159245

2、找出100-200之间的全部素数。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;int main()
{int n = 101, m, i, j=0;bool b;while (n<=200){m = sqrt(n);b = true;for (i = 2; i <= m; i++)if (n % i == 0){b = false;break;} if (b){cout <<setw(5)<< n;j++;if (j % 3 == 0)cout << '!' << endl;}n += 2;}return 0;
}

结果如下:

http://www.lryc.cn/news/597114.html

相关文章:

  • [Mediatek] MTK openwrt-21.02 wifi 没启动问题
  • 详述消息队列kafka
  • 【通识】手机和芯片相关
  • LazyVim 加载顺序
  • MySQL金融级数据一致性保障:从原理到实战
  • 数据持久化--PlayerPrefs
  • Hexo - 免费搭建个人博客06 - 安装、切换主题Butterfly
  • 基于Java实现DFT、FFT,并绘制波形图和频谱图,音频播放频谱或波形图
  • 内积(Inner Product)和余弦相似度区别
  • MATLAB近红外光谱分析:MATLAB编程+BP神经网络+SVM+随机森林+遗传算法+变量降维+卷积神经网络等
  • 以 “有机” 重构增长:云集从电商平台到健康生活社区的跃迁
  • 零工合规挑战:盖雅以智能安全体系重构企业用工风控
  • 认识linux进程内存布局以及与命令行参数和环境变量的关系
  • 如何在VS code里使用SQLtool连接上WSL上的MySQL服务
  • 【软件系统架构】系列七:物联网云平台系统性能深入解析
  • 线性神经网络(深度学习-李沐-学习笔记)
  • 探索大语言模型(LLM):提升 RAG 性能的全方位优化策略
  • 我考PostgreSQL中级专家证书二三事
  • 论文略读:REMEDY: RECIPE MERGING DYNAMICS IN LARGE VISION-LANGUAGE MODELS
  • vue3笔记(2)自用
  • 微软2025教育AI报告:教育群体采用AI的比例显著提升
  • 技术速递|使用 Semantic Kernel 与 A2A 协议构建多智能体解决方案
  • Qt 样式表(QSS):打造个性化界面
  • 【前端】【Vue DevTools】Vue DevTools 进阶:用 Trae / Cursor 替换 VSCode 打开文件(跳转行列无误)
  • 论文略读:Knowledge is a Region in Weight Space for Finetuned Language Models
  • iOS上使用WebRTC推拉流的案例
  • 想曰加密工具好用吗?本地安全、支持多算法的加密方案详解
  • ZLMediaKit流媒体服务器WebRTC页面显示:使用docker部署
  • 基于Matlab传统图像处理技术的车辆车型识别与分类方法研究
  • 【第三章自定义检视面板_创建自定义编辑器_如何创建自定义PropertyDrawer(9/9)】