循环结构(二)——while语句【互三互三】


文章目录

🍁引言

🍁一、语句格式

🍁二、语句执行过程

🍁三、格式举例

🍁四、例题

👉【例1】

💎【示例代码】

👉【例2】

🚀【方法1】:

💎【示例代码】

🚀【方法2】:

💎【示例代码】

👉【例3】

🚀【分析】

💎【示例代码】1

💎【示例代码】2

👉【例4】

💎【示例代码】

💎【优化示例代码】

👉【例5】

💎【示例代码】1

💎【示例代码】2

🍁总结 

🍁备注


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

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

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

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

🍁引言

于 C++编程之广袤天地间,while 之语乃循环架构之枢要,熠熠生辉。其依特定之条件以判是否行循环之体,此式灵动便捷、别具一格,能妥处循环之数未明之务。譬如欲求一至百之和,可设初值为零,变数自一始,以变数小于等于百为条件,于每次循环中累加变数,变数自增一,直至条件不满足而止。又若需持续读取用户输入直至特定字符,亦能以 while 达成。无论模拟实时之系统运转、处用户之持续输入,抑或操持动态数据之处理,while 之语皆显事半功倍、游刃有余之卓异。深悟而善用 while 之语,利于如虎添翼增编程之能,为构独具匠心、出类拔萃之 C++程式固其础石。值此之际,吾等携手共揭 while 之语之神秘纱幕,探其无穷无尽、广袤无垠之可能。

🍁一、语句格式

格式1

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

格式2

说明:循环体部分由多个语句构成,应由一对花括号括起来,构成一个语句块的形式。 程序风格提示:写while循环语句时,循环体的语句相对于while缩进两格。

🍁二、语句执行过程

(1)计算作为循环控制条件表达式的值,得到逻辑真或假,假定用M表示。

(2)若M为真,则执行了一遍循环体,否则离开循环,结束整个while语句的执行。

(3)循环体的所有语句执行结束后,自动转向第(1)步执行。

🍁三、格式举例

(1)

#include<bits/stdc++.h>
using namespace std;
int main(){int i=0;while (i<10)++i;
}

功能:当i的值小于10,重复执行++i语句

(2)

while(cin>>x,x<0)   
/*相当于
cin>>x;
while(x<0)cin>>x;
*/

功能:当输入的数据小于0时,重复读数据。

🍁四、例题

👉【例1】

求s=1 +2 +3……+n,当加到第几项时,s的值会超过1000?

💎【示例代码】
#include <iostream>
using namespace std;
int main () {int n = 0, s = 0;while (s <= 1000) {++n;s += n;}cout << n;return 0;
}
👉【例2】

求两个正整数m,n的最大公约数。

🚀【方法1】:

求任意两个自然数m和n的最大公约数,可以想到其最大的可能就是两个数中的较小者min,最小可能是1。所以,可以设最大公约数gcd从min开始进行判断,若gcd>1并且没有同时整除m和n,那么就gcd-1,重复判断是否整除。

💎【示例代码】
#include<iostream>
using namespace std;
int main() {int m, n, gcd;cin >> m >> n;gcd = m > n ? n : m;             //注意此处的特殊写法while (gcd > 1 && (m % gcd != 0 || n % gcd != 0))gcd--;                                 //每次减1寻找最大公约数cout << gcd << endl;           //输出最大公约数return 0;
}
🚀【方法2】:

求两个整数的最大公约数可以采用辗转相除法即欧几里德算法。对于任意两个自然数m和n,用m,n,r分别表示被除数、除数、余数,那么m和n的最大公约数等于n和r的最大公约数。以下是辗转相除法的算法:    

1)求m除以n的余数r;    

2)当r!=0,执行第3)步;若r==0,则n为最大公约数,算法结束。    

3)将n的值赋给m,将r的值赋给n;再求m除以n的余数r。    

4)转到第2)步

💎【示例代码】
#include<iostream>
using namespace std;
int main() {int m, n;cin >> m >> n;int r = m % n;while (r != 0) {    //也可以使用 while (r),c++中 非0即真m = n;n = r;r = m % n;}cout << n;return 0;
}
👉【例3】

编一程序求满足不等式1+ 1/2 + 1/3 …+1/n >=5的最小n值。

🚀【分析】

此题不等式的左边是一个求和的算式,该和式中的数据项个数是未知的,也正是要求出的。对于和式中的每个数据项,对应的通式为1/i,i=1,2,…n。 所以可采用循环累加的方法来计算出它的值。设循环变量为i,它应从1开始取值,每次增加1,直到和式的值不小于5为止,此时的i值就是所求的n。设累加变量为s,在循环体内把1/i的值累加到s上。

根据以上分

析,采用while循环编写出程序如下:

💎【示例代码】1
#include <iostream>
using namespace std;
int main () {int i = 0;float s = 0;while (s < 5) { //当s的值还未超过5时++i;s += 1.0 / i;}cout << i;return 0;
}

若采用for循环来写,则如下所示:

💎【示例代码】2
#include <iostream>
using namespace std;
int main () {int i;float s = 0;for (i = 1; s < 5; ++i)s += 1.0 / i;cout << i - 1;return 0;
}
👉【例4】

输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。

样例输入:2 8 3 5 1 7 3 6

样例输出:1 8 4.375

💎【示例代码】
#include<cstdio>
int main() {int x, n = 0, min, max, s = 0;while (scanf("%d", &x) == 1) {s += x;if (x < min) min = x;if (x > max) max = x;++n;}printf("%d %d %.3lf\n", min, max, (double)s / n);return 0;
}
💎【优化示例代码】
#include<cstdio>
#define INF 100000000
int main() {int x, n = 0, min = INF, max = -INF, s = 0;while (scanf("%d", &x) == 1)//scanf("%d",&x)!=EOF,如果没数据可读,scanf返回EOF{s += x;if (x < min) min = x;if (x > max) max = x;++n;}printf("%d %d %.3lf\n", min, max, (double)s / n);return 0;
}
👉【例5】

输入若干对整数,输出每对之和。假设每个整数不超过10^9,一共不超过10^6个数对。

💎【示例代码】1
#include<cstdio>
int main() {int a, b;while (scanf("%d%d", &a, &b) == 2)printf("%d\n", a + b);return 0;
}
💎【示例代码】2
#include<iostream>
using namespace std;
int main() {int a, b;while (cin >> a >> b )cout << a + b << endl;return 0;
}

🍁总结 

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

🍁备注

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

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

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

相关文章

【Java伴学笔记】Day-02 变量|计算机的存储方式|数据类型|标识符|键盘输入流

一、变量 在Java中&#xff0c;变量用于存储数据值&#xff0c;可以是数字、文本或其他类型的信息。Java中的变量必须声明后才能使用&#xff0c;并且每个变量都有特定的类型。下面是一些基本的变量使用示例&#xff1a; 声明一个整型变量并赋值&#xff1a; int myNumber; …

企业如何选择渲染农场?渲染100邀请码1a12

渲染农场能降低企业成本&#xff0c;帮助企业更好的服务客户&#xff0c;那么如何选择渲染农场呢&#xff1f;又有什么标准&#xff1f;这次我们就来看下。 1、渲染性能 渲染性能是衡量农场优劣的重要指标&#xff0c;性能越好农场越优质&#xff0c;性能主要包括渲染速度、稳…

一文快速接入银行卡识别API

银行卡识别API 能通过机器学习和图像识别技术来解析银行卡相关信息&#xff0c;根据用户上传卡片自动识别内容&#xff0c;返回该卡的卡号、所属银行及银行类型等信息。可以在用户需要输入银行卡等相关信息时使用该功能&#xff0c;帮助用户快速输入正确信息&#xff0c;简化用…

VPX3U架构+GPU景嘉微:基于飞腾处理器的全国产化刀片式板卡

近期承接了客户一个全国产的VPX3U的项目。搭载的飞腾FT2000系列处理器的VPX3U板卡。服务于某某部门。这款产品拥有全国产化及自主可控的硬件技术。以下是基于飞腾FT2000处理器的VPX3U主板的一些特点&#xff1a; ①飞腾FT2000系列处理器 处理器&#xff1a;板卡兼容飞腾FT2000…

【触摸屏】【红十字会学习系统】功能模块:视频 + AI拍照合成

项目背景 提升公众急救能力&#xff1a;确保每个人都能在紧急情况下采取正确的急救措施&#xff0c;减少伤害&#xff0c;挽救生命。培养人道主义价值观&#xff1a;通过教育和培训&#xff0c;传播红十字精神&#xff0c;促进社会对弱势群体的关注与支持。建立社区响应网络&a…

【Linux】进程间通信(IPC)——匿名管道

目录 为什么要进行进程间通信&#xff1f; 匿名管道的具体实现 pipe创建内存级文件形成管道 pipe的简单使用 匿名管道的四种情况和五种特性 四种情况 五种特性 PIPE_BUF 命令行管道 | 功能代码&#xff1a;创建进程池 为什么要进行进程间通信&#xff1f; 1.数据传输&…

第五天安全笔记(持续更新)

第五天防御笔记 NAT种类&#xff1a; 静态NAT动态NATNapt 特点&#xff1a; 一对多----easy ip 多对多的napt 服务器的映射关系: 1.源NAT----基于IP地址进行转换&#xff0c;包括静态NAT&#xff0c;动态NAT&#xff0c;以及NAPT 2.目标NAT---基于目标IP地址进行转换&a…

[笔记.AI]AI Agent理解(LLM AI Agent)

前几天看到一个图&#xff0c;感觉能帮助理解 AI Agent 的基本思想和原理&#xff0c;特摘过来备忘。顺道加上自己目前对相关部分的理解&#xff0c;不一定对&#xff0c;权当做个记录。 另外&#xff0c;专门查了下图的来源&#xff0c;应该是源自 Lilian Weng 的博客文章《…

Android Studio启动报错:The emulator process for AVD Pixel_5_API_30 has terminated

Android Studio启动AVD报错&#xff1a; The emulator process for AVD Pixel_5_API_30 has terminated. 原因&#xff1a;安装时使用自定义安装后&#xff0c;修改了默认安装目录。 而avd文件默认在 C:\Users\用户名\.android 目录下。所以导致打开AVD时报错。 解决方法&am…

SadTalker数字人服务器部署

一、单独SadTalker部署 git clone https://github.com/OpenTalker/SadTalker.gitcd SadTalker conda create -n sadtalker python3.8conda activate sadtalkerpip install torch1.12.1cu113 torchvision0.13.1cu113 torchaudio0.12.1 --extra-index-url https://download.pyto…

快速上手绿联私有云UGOS Pro系统Docker | 安装/部署/管理/docker-compose一网打尽

快速上手绿联私有云UGOS Pro系统Docker | 安装/部署/管理/docker-compose一网打尽 哈喽小伙伴们好&#xff0c;我是Stark-C~ 因为众所周知的原因&#xff0c;关于最新发布的绿联私有云UGOS Pro系统咱这里也不过多说&#xff0c;不过有一点不可否认&#xff1a;新系统专业性更…

代码随想录第51天|单调栈

42. 接雨水 参考 思路1: 暴力解法 找每个柱子的左右高度超时 O(N^2) 思路2: 双指针优化 class Solution { public:int trap(vector<int>& height) {vector<int> lheight(height.size(), 0);vector<int> rheight(height.size(), 0);lheight[0] hei…

nginx的正向与反向代理

正向代理与反向代理的区别 虽然正向代理和反向代理都涉及代理服务器接收客户端请求并向服务端转发请求&#xff0c;但它们之间存在一些关键的区别&#xff1a; 正向代理&#xff1a; 在正向代理中&#xff0c;代理服务器代表客户端向服务器发送请求&#xff0c;并将服务…

ctfshow-web入门-php特性(web104-web108)

目录 1、web104 2、web105 3、web106 4、web107 5、web108 1、web104 需要传入的 v1 和 v2 进行 sha1 加密后相等。 解法1&#xff1a; 这里都没有判断 v1 和 v2 是否相等&#xff0c;我们直接传入同样的内容加密后肯定也一样。 ?v21 post&#xff1a; v11 拿到 flag…

SQL 多变关联使用子查询去重

不去重状态 select a.*,b.recon_amt from free_settlement_first aleft join free_settlement_second b on a.settlement_first_id b.settlement_first_id 有2条数据出现了重复 使用子查询去重 select a.*,b.recon_amt from free_settlement_first aleft join free_settlem…

Vue 最新动态!!!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当Vue 3.4在六个月前发布时,整个前端开发社区都为之振奋。这次更新不仅带来了许多新特性,还解决了许多开发过程中遇到的痛点。 然而,时间飞逝,随着我在项目中不断应用这些新特性,逐渐积累了很多宝贵的经验和心得。 今…

一篇学通Axios

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 node.js 环境。它提供了一种简单易用的方式来发送 HTTP 请求&#xff0c;并支持诸如请求和响应拦截、转换数据、取消请求以及自动转换 JSON 数据等功能。 Axios 名字的由来 Axios 的名字来源于希腊神话中的…

Linux操作系统入门(适用java软件开发)

1.什么是操作系统? 操作系统&#xff08;Operating System&#xff0c;简称 OS&#xff09;是一种系统软件&#xff0c;它管理和控制计算机硬件与软件资源&#xff0c;为用户和应用程序提供一个接口和环境来访问计算机系统的服务和功能。操作系统的主要目标是提供一个方便、有…

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析&#xff1a;使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代&#xff0c;数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究&#xff0c;数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

微积分-导数8(线性近似和微分)

线性近似 我们已经看到&#xff0c;在切点附近&#xff0c;曲线与其切线非常接近。事实上&#xff0c;通过放大可微函数图上的某一点&#xff0c;我们注意到图形看起来越来越像它的切线&#xff08;见图&#xff09;。这一观察是找到函数近似值的方法的基础。 这个想法是&am…