循環結構(二)——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.pswp.cn/web/45018.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45018.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45018.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

運維的操作紅線

1. 無工單、郵件的任何操作&#xff0c;嚴禁執行。 2. 工單標題和內容不一致或工單內容超出現場范圍禁止操作。 3. 操作前必須確定資產信息&#xff1a;機柜號、U位、資產號、sn 號、ip。 4. 機柜后門操作設備&#xff0c;必須多次執行第 3 條紅線。 5. 嚴禁操作、觸碰工單指定…

【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…

java同步塊介紹

在多線程編程中,同步塊(synchronized block)用于保護代碼塊,使得同一時間只有一個線程能夠執行該代碼塊,從而避免并發問題。同步塊使用一個對象作為鎖,確保在同步塊內對共享資源的訪問是線程安全的。 1. 什么是同步塊? 同步塊是 Java 中的一種同步機制,用于保護代碼塊…

【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…

切換node版本

一、在Linux上切換Node.js版本有多種實現方法&#xff1a; 1.使用nvm&#xff08;Node Version Manager&#xff09;&#xff1a; 安裝nvm&#xff1a;可以通過curl或wget來安裝nvm&#xff0c;具體請參考nvm的官方文檔。 安裝不同版本的Node.js&#xff1a;使用nvm可以輕松…

快速上手綠聯私有云UGOS Pro系統Docker | 安裝/部署/管理/docker-compose一網打盡

快速上手綠聯私有云UGOS Pro系統Docker | 安裝/部署/管理/docker-compose一網打盡 哈嘍小伙伴們好&#xff0c;我是Stark-C~ 因為眾所周知的原因&#xff0c;關于最新發布的綠聯私有云UGOS Pro系統咱這里也不過多說&#xff0c;不過有一點不可否認&#xff1a;新系統專業性更…

用python寫一個基于ai agent協同供應鏈管理流程的案例

要實現一個基于AI Agent的協同供應鏈管理流程&#xff0c;我們可以參考以下步驟&#xff1a; 1. 首先&#xff0c;定義一個類SupplyChainManager&#xff0c;用于模擬供應鏈管理系統的功能。 python class SupplyChainManager: def __init__(self): self.warehouse Warehous…

代碼隨想錄第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在六個月前發布時,整個前端開發社區都為之振奮。這次更新不僅帶來了許多新特性,還解決了許多開發過程中遇到的痛點。 然而,時間飛逝,隨著我在項目中不斷應用這些新特性,逐漸積累了很多寶貴的經驗和心得。 今…