循環結構(一)——for語句【互三互三】


文章目錄

🍁?引言

🍁?一、語句格式

🍁 二、語句執行過程

🍁 三、語句格式舉例

🍁四、例題

👉【例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,每次增量為2cout << 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分別偶數和,奇數和,初始化為0for (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.pswp.cn/web/44712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44712.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44712.shtml

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

相關文章

【C++ 編程】引用 - 給變量起別名、淺復制

基本語法&#xff1a;數據類型 &別名 原名int a 10; int &b a;引用必須初始化 (? int &b;)&#xff0c;初始化后不可改變 (int c 5; b c&#xff1a;b 沒有變成c的別名&#xff0c;而是 a、b 對應的值變更為了 c 的值)本質是指針常量, 淺復制 【黑馬程序員匠…

Cartographer重入門到精通(二):運行作者demo及自己的數據集

在demo數據包上運行cartographer 現在Cartographer和Cartographer的Ros包已經都安裝好了&#xff0c;你可以下載官方的數據集到指定的目錄&#xff08;比如在Deutsches Museum用背包采集的2D和3D 數據&#xff09;&#xff0c;然后使用roslauch來啟動demo。 注&#xff1a;la…

IO半虛擬化-Virtio學習筆記

參考&#xff1a;《深入淺出DPDK》及大佬們的各種博客 Virtio簡介&運行環境 Virtio 是一種用于虛擬化環境中的半虛擬化 I/O 框架&#xff0c;目的是在虛擬機和主機之間提供一種高效的 I/O 機制。關于什么是半虛擬化和全虛擬化&#xff1a;見SR-IOV學習筆記。 YES&#xf…

PDMS二次開發(二十二)——關于1.0.3.1版本升級內容的說明

目錄 1.更新內容介紹2.效果演示3.關于重構自動添加焊口功能的說明3.1錯誤示例 3.問題交流1.創建焊口提示失敗2.程序崩潰 1.更新內容介紹 在添加焊口之前先清除當前branch已有焊口&#xff1b;顯示清除焊口的個數和添加焊口的個數&#xff1b;重構了自動添加焊口功能&#xff0…

值得關注的數據資產入表

不錯的講解視頻&#xff0c;來自&#xff1a;第122期-杜海博士-《數據資源入表及數據資產化》-大數據百家講壇-廈門大學數據庫實驗室主辦第122期-杜海博士-《數據資源入表及數據資產化》-大數據百家講壇-廈門大學數據庫實驗室主辦-20240708_嗶哩嗶哩_bilibili

《A++ 敏捷開發》- 10 二八原則

團隊成員協作&#xff0c;利用項目數據&#xff0c;分析根本原因&#xff0c;制定糾正措施&#xff0c;并立馬嘗試&#xff0c;判斷是否有效&#xff0c;是改善的“基本功”。10-12章會探索里面的注意事項&#xff0c;13章會看兩家公司的實施情況和常見問題。 如果已經獲得高層…

Linq的常用方法

LINQ&#xff08;Language Integrated Query&#xff09;是.NET Framework中用于數據查詢的組件&#xff0c;它將查詢功能集成到C#等.NET語言中。LINQ提供了豐富的查詢操作符&#xff0c;這些操作符可以應用于各種數據源&#xff0c;如內存中的集合、數據庫、XML等。以下是一些…

java中的String 以及其方法(超詳細!!!)

文章目錄 一、String類型是什么String不可變的原因(經典面試題)String不可變的好處 二、String的常用構造形式1.使用常量串構造2.使用newString對象構造3.字符串數組構造 三、常用方法1. length() 獲取字符串的長度2. charAt() 獲取字符串中指定字符的值 (代碼單元)3. codePoin…

水的幾個科學問題及引發的思考

水的幾個科學問題及引發的思考 兩個相同的容器A和B&#xff0c;分別裝有同質量的水&#xff0c;然后&#xff0c;在A容器中加入水&#xff0c;在B容器中加入冰&#xff0c;如果加入水和冰的質量相同。問&#xff0c;容器B的水位將與容器A的水位相同嗎&#xff08;假設冰未融化時…

Log4j的原理及應用詳解(二)

本系列文章簡介&#xff1a; 在軟件開發的廣闊領域中&#xff0c;日志記錄是一項至關重要的活動。它不僅幫助開發者追蹤程序的執行流程&#xff0c;還在問題排查、性能監控以及用戶行為分析等方面發揮著不可替代的作用。隨著軟件系統的日益復雜&#xff0c;對日志管理的需求也日…

MySQL和SQlServer的區別

MySQL和SQlServer的區別 說明&#xff1a;在一些常用的SQL語句中&#xff0c;MySQL和SQLServer存在有一些區別&#xff0c;后續我也會將我遇到的不同點持續更新在這篇博客中。 1. 獲取當前時間 SQLServer&#xff1a; -- SQLServer -- 1.獲取當前時間 SELECT GETDATE(); --…

Vue2切換圖片小案例

代碼中 v-show "index>0",是表示下標只有大于零時上一頁按鈕才會顯示v-show "index<list.length-1",是表示下標只有小于list數組的最大值才會顯示&#xff0c;反之隱藏。click "index--"和click "index",是點擊按鈕后加減數…

【ZooKeeper學習筆記】

1. ZooKeeper基本概念 Zookeeper官網&#xff1a;https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop項目中的一個子項目&#xff0c;是一個樹形目錄服務Zookeeper翻譯過來就是動物園管理員&#xff0c;用來管理Hadoop&#xff08;大象&#xff09;、Hive&…

AR0132AT 1/3 英寸 CMOS 數字圖像傳感器可提供百萬像素 HDR 圖像處理(器件編號包含:AR0132AT6R、AR0132AT6C)

AR0132AT 1/3 英寸 CMOS 數字圖像傳感器&#xff0c;帶 1280H x 960V 有效像素陣列。它能在線性或高動態模式下捕捉圖像&#xff0c;且帶有卷簾快門讀取。它包含了多種復雜的攝像功能&#xff0c;如自動曝光控制、開窗&#xff0c;以及視頻和單幀模式。它適用于低光度和高動態范…

QML界面控件加載與顯示順序

一、QML界面控件加載順序 QML在界面加載時的順序和我們認知的有很大的不同&#xff0c;有時候會對我們獲取參數以及界面實現造成很大的困擾 1、加載順序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …

Open3D點云算法與點云深度學習案例匯總(長期更新)

目錄 引言 Open3D算法匯總 Open3D快速安裝 測試點云資料 一、點云的讀寫與顯示 二、KD tree和八叉樹的應用 三、點云特征提取 四、點云濾波算法 五、點云配準算法 六、點云分割算法&#xff08;待更新&#xff09; 七、常用操作 八、數據轉換 九、常用小工具 三維…

交換機的二三層原理

相同VLAN的交換機交換原理&#xff08;二層交換原理&#xff09;&#xff1a; 交換機收到數據幀&#xff0c;首先會檢查數據幀的VLAN標簽和目標MAC&#xff0c;若屬于相同VLAN&#xff0c;且該目標MAC在本地MAC表中&#xff0c;則直接根據出接口進行數據轉發 不同VLAN的交換機…

九盾安防:如何調控叉車限速器的報警速度呢

在繁忙的物流倉儲和制造業環境中&#xff0c;叉車是不可或缺的搬運設備。然而&#xff0c;其高速行駛也帶來了潛在的安全隱患。為了確保作業人員和貨物的安全&#xff0c;又車限速器的設置顯得尤為關鍵。那么&#xff0c;如何調控叉車限速器的報警速度呢? 叉車限速器的速度調整…

復制vmware虛擬機文件并改名(文件名使用python替換)得到一臺新的虛擬機

文章目錄 需求實驗復制文件夾并重命名使用python將所有文件名“WinSer2022”字符替換成“wingetmac”修改虛擬機配置文件&#xff08;.vmx&#xff09;打開新的虛擬機成功 需求 將已有的Winser2022虛擬機復制成wingetmac并開機 實驗 復制文件夾并重命名 將"WinSer2022…

《人生苦短,我用python·九》python之線程池ThreadPoolExecutor的使用

Python線程池是一種管理和使用線程的高級抽象&#xff0c;使得線程的創建、分配和管理更加方便。通過線程池&#xff0c;可以避免頻繁地創建和銷毀線程&#xff0c;從而提高程序的性能。Python的concurrent.futures模塊提供了一個ThreadPoolExecutor類&#xff0c;可以方便地使…