文章目錄
🍁?引言
🍁?一、語句格式
🍁 二、語句執行過程
🍁 三、語句格式舉例
🍁四、例題
👉【例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++的小伙伴們可以私我拿到免費安裝包