1. 程式人生 > >C++控制結構-迴圈語句

C++控制結構-迴圈語句

迴圈語句控制結構在應用程式中主要用於重複執行程式碼體操作,直到條件不滿足的情況下終止。迴圈語句主要包含whiledo/while以及for三類控制語句,其基本概念及使用方式將會通過不同的小節分別介紹。

5.3.1  while語句

C++語言提供的控制結構最後一種就是迴圈控制結構,該結構可以讓程式在設定的條件之內作重複執行操作。迴圈控制結構在C++中包含3個基本結構,whiledo…whilefor迴圈控制語句。這裡首先看第一種迴圈while結構的基本語法定義如下所示。

while(表示式)

{

         …                        //程式碼塊

}

while迴圈控制,沒有初始化以及更新條件值部分。只通過計算表示式的值是否為真,為真即執行隨後的程式碼塊,如此反覆。直到測試條件不為真則跳出該迴圈體。通常為了能夠正確退出while

迴圈控制,那麼該迴圈體中必須能夠完成某種影響測試條件的操作。下面可以通過一個迴圈遍歷字串的例項瞭解while迴圈控制結構的基本使用。

1.準備例項

開啟UE工具,建立新的空檔案並且另存為chapter0503.cpp。該程式碼檔案隨後會同makefile檔案一起通過FTP工具傳輸至Linux伺服器端,客戶端通過scrt工具訪問操作。程式程式碼檔案編輯如下所示。

/**

* 例項chapter0503

* 原始檔chapter0503.cpp

* 計算字串長度

*/

#include <iostream>

#include <string>

using namespace std;

/*主程式入口*/

int main()

{

         stringvalue;                                                    //定義字串變數value

         int i= 0;                                                             //定義整型變數,並賦初值為0

         cout<<"pleaseinput string:"<<endl;           //列印輸入字串提示資訊

         cin>>value;                                                      //

輸入字串

         while(value[i]!= '\0')                                       //while迴圈測試條件,當字串中字元不為結束字元時為真

         {

                   ++i;                                                           //迴圈體,每迴圈判斷一次計數增加1

         }

         cout<<"Thisstring's length:"<<i<<endl;

         return0;

}

上述例項主要演示while迴圈結構的使用情況。程式中應用到字串變數當作字元陣列使用的情形,關於這部分知識詳細講述會在字串章節介紹。初學者這時重點只需要掌握while迴圈結構的基本用法。

2.編輯makefile

Linux平臺下需要編譯原始檔為chapter0503.cpp,相關makefile工程檔案編譯命令編輯如下所示。

OBJECTS=chapter0503.o

CC=g++

chapter0503: $(OBJECTS)

    $(CC)$(OBJECTS) -g -o chapter0503

clean:

    rm -fchapter0503 core $(OBJECTS)

submit:

    cp -f -rchapter0503 ../bin

    cp -f -r*.h ../include

上述makefile檔案套用前面的模板格式,主要替換了程式碼檔案、程式編譯中間檔案、可執行程式等。在編譯命令部分-g選項的加入,表明程式編譯同時加入了可調式資訊。

3.編譯執行程式

當前shell下執行make命令,生成可執行程式檔案,隨後通過make submit命令提交程式檔案至本例項bin目錄,通過cd命令定位至例項bin目錄,執行該程式檔案執行結果如下所示。

[[email protected] src]$ make

g++    -c -ochapter0503.o chapter0503.cpp

g++ chapter0503.o -g -o chapter0503

[[email protected] src]$ make submit

cp -f -r chapter0503 ../bin

cp -f -r *.h ../include

[[email protected]]$ cd ../bin

[[email protected]]$ ./chapter0503

please input string:

teststring

This string's length:10

該例項程式主要利用while迴圈實現輸入字串長度計算,這裡使用到string型別字串。由於字串都是由'\0'結尾,所以測試條件中可以判斷字元是否為'\0'。如果不是,則繼續計數變數i+1向下一個字元作判斷,直到走到最末尾的'\0'為止跳出該迴圈。這裡使用了整型計數變數i,用來記錄字串長度。

5.3.2  do…while語句

do…while迴圈不同於while結構。該結構首先需要執行一次迴圈體,隨後再針對while條件進行判斷是否需要繼續執行迴圈體。do…while迴圈結構基本語法定義如下所示。

do

{

         …               //迴圈體

}while(測試條件);

該結構預先會執行do關鍵字之後的迴圈體中的程式碼塊,之後開始判斷while的測試條件。條件結果值為真,則繼續執行do後續的迴圈體。條件結果值為假,則跳出該迴圈。最後以分號為結尾的do/while結構整體可以看作一條語句。do/while迴圈結構至少執行一次迴圈體,這是與while迴圈結構最大的區別之處。下面通過一個完整例項瞭解do/while結構區別於while結構的應用情況。

1.準備例項

開啟UE工具,建立新的空檔案並且另存為chapter0504.cpp。該程式碼檔案隨後會同makefile檔案一起通過FTP工具傳輸至Linux伺服器端,客戶端通過scrt工具訪問操作。程式程式碼檔案編輯如下所示。

/**

* 例項chapter0504

* 原始檔chapter0504.cpp

* 例項do…while結構

*/

#include <iostream>

using namespace std;

/*主程式入口*/

int main()

{

         constint size = 3;                                  //定義整型常量size,其值為3

         int i= 0;                                                   //定義整型變數i,初始化0

         do                                                             //執行do結構部分

         {

                   cout<<"ivalue:"<<i<<endl;                  //列印整型變數i

                   i++;                                                 //更新整型變數i

         }while(i< size);                                      //while條件,即為是否退出迴圈判斷條件

         return0;

}

上述例項主要演示do…while結構在實際應用中的使用情況。該程式主要用於迴圈列印輸出條件之內的遞增值,必須注意的是該結構至少會執行一次do中的程式碼體。

2.編輯makefile

Linux平臺下需要編譯原始檔為chapter0504.cpp,相關makefile工程檔案編譯命令編輯如下所示。

OBJECTS=chapter0504.o

CC=g++

chapter0504: $(OBJECTS)

    $(CC)$(OBJECTS) -g -o chapter0504

clean:

    rm -fchapter0504 core $(OBJECTS)

submit:

    cp -f -rchapter0504 ../bin

    cp -f -r*.h ../include

上述makefile檔案套用前面的模板格式,主要替換了程式碼檔案、程式編譯中間檔案、可執行程式等。在編譯命令部分-g選項的加入,表明程式編譯同時加入了可調式資訊。

3.編譯執行程式

當前shell下執行make命令,生成可執行程式檔案,隨後通過make submit命令提交程式檔案至本例項bin目錄,通過cd命令定位至例項bin目錄,執行該程式檔案執行結果如下所示。

[[email protected] src]$ make

g++ -c -o chapter0504.o chapter0504.cpp

g++ chapter0504.o -g -o chapter0504

[[email protected] src]$ make submit

cp -f -r chapter0504 ../bin

cp -f -r *.h ../include

[[email protected] src]$ cd ../bin

[[email protected] bin]$ ./chapter0504

i value:0

i value:1

i value:2

如上例項中使用了do/while控制結構,主要用於列印符合測試條件的變數i值。首先定義整型常量size,該常量值為3在整個程式中保持不變。隨後定義整型條件變數i並且初始化為0值。由於do/while結構第一次優先執行do後代碼體,所以首先列印變數i的初始值0,後更新該條件變數i以便於能夠達到退出該迴圈的條件,否則會陷入死迴圈中。隨後while中判斷i<size的條件是否成立,成立則繼續執行do後的程式碼體,不成立則退出該迴圈結構。

5.3.3  for語句

C++提供for迴圈控制結構可以用來直接處理重複的任務,該結構基本語法定義如下所示。

for(初始化表示式;測試條件;更新表示式值)

{

         …               //迴圈體

}

for迴圈主要包括兩個部分組成,即迴圈條件和迴圈體。迴圈條件則由初始化表示式、測試條件以及更新初始化表示式值三個部分組成。

下面通過一些for迴圈控制定義,瞭解for迴圈控制結構基本使用情況,例項定義如下所示。

const int size = 10;                                                                     //定義整型常量size,常量值為10

for(int i = 0;i < size;i++)                                                              //for迴圈結構

{

         cout<<”ivalue:”<<endl;                                                    //for控制結構的程式碼體

}

int i;                                                                                               //for表示式外部定義,此處為整型變數i

for(i = 0;i < size;i++)                                                                   //外部定義內部初始化表示式的for結構

{

         …                                                                                         //for控制結構的程式碼體

}

for;i < size;                                                                                    //只有判斷條件的for控制結構

{

         cout<<”ivalue:”<<i<<endl;                                                       //for控制結構的程式碼體

         ++i;                                                                                       //程式碼體中更新for表示式值

}

for(;;)                                                                                             //for迴圈,表示無限迴圈

{

         …

}

以上例項分別定義了for迴圈結構的四種操作方式,首先在外部定義了常量size表示for迴圈中判斷值。隨後第一個for迴圈結構,遵循for迴圈語法結構定義方式,分別為for迴圈中初始化表示式即定義整型變數i並初始化為0值,該初始化操作在這個for迴圈中只執行一次。之後定義for迴圈的測試條件即i值必須小於size值才能為真。隨後執行程式碼體部分列印i值資訊程式碼,之後執行更新表示式值操作,然後再進行測試條件直到不滿足為止跳出迴圈體。

由於第一個表示式中整型變數i是在for迴圈中定義的,所以其變數域只能在for迴圈整個結構中操作,外部無法操作該變數。為了能使的外部也能操作該表示式,那麼第二種情況在外部定義整型變數i,在for迴圈中進行初始化後使用。第三種for迴圈結構省略了表示式定義初始化以及更新表示式部分,直接使用測試條件,隨後在for程式碼體內部更新該表示式值,再重新測試條件執行。

最後一個for結構省略了該迴圈中三個部分,此時程式陷入無限迴圈中,在某些特殊場合無限迴圈的應用是存在的,其程式碼體中可以執行一些檢測類工作,用於那些應用程序啟動後不斷掃描檢測處理事務的場合。

5.3.3  例項5-3迴圈語句程式

迴圈控制結構前兩種whiledo/while結構在講述其基本語法概念同時都配合例項作了應用講述。下面通過一個完整的簡單例項來演示for迴圈控制結構通常在程式中的使用情況。

1.準備例項

開啟UE工具,建立新的空檔案並且另存為chapter0505.cpp。該程式碼檔案隨後會同makefile檔案一起通過FTP工具傳輸至Linux伺服器端,客戶端通過scrt工具訪問操作。程式程式碼檔案編輯如下所示。

/**

* 例項chapter0505

* 原始檔chapter0505.cpp

* 迴圈語句程式例項

*/

#include <iostream>

using namespace std;

/*主程式入口*/

int main()

{

         intmax;                                                                      //定義整型變數max

         intsum = 0;                                                               //定義整型變數sum,表示1max數之和

         cout<<"pleaseinput a value:"<<endl;                           //提示輸入max整型值

         cin>>max;                                                                          //輸入max

         for(inti = 0;i <= max;i++)                                        //以小於max值為迴圈條件,執行迴圈操作

         {

                   sum+= i;                                                          //執行1max值之和操作

         }

         cout<<"Thevalue's sum:"<<sum<<endl;            //列印1max之間數之和

         return0;

}

上述例項主要演示for迴圈結構的一般性使用情況。本程式通過從鍵盤輸入整型數,用來決定for迴圈的上限。初學者在本例項中主要掌握for迴圈結構的一般使用方法,更多for迴圈操作的技巧將會在後續各章例項程式中展示。

2.編輯makefile

Linux平臺下需要編譯原始檔為chapter0505.cpp,相關makefile工程檔案編譯命令編輯如下所示。

OBJECTS=chapter0505.o

CC=g++

chapter0505: $(OBJECTS)

    $(CC)$(OBJECTS) -g -o chapter0505

clean:

    rm -fchapter0505 core $(OBJECTS)

submit:

    cp -f -rchapter0505 ../bin

    cp -f -r*.h ../include

上述makefile檔案套用前面的模板格式,主要替換了程式碼檔案、程式編譯中間檔案、可執行程式等。在編譯命令部分-g選項的加入,表明程式編譯同時加入了可調式資訊。

3.編譯執行程式

當前shell下執行make命令,生成可執行程式檔案,隨後通過make submit命令提交程式檔案至本例項bin目錄,通過cd命令定位至例項bin目錄,執行該程式檔案執行結果如下所示。

[[email protected] src]$ make

g++ -c -o chapter0505.o chapter0505.cpp

g++ chapter0505.o -g -o chapter0505

[[email protected]ocalhost src]$ make submit

cp -f -r chapter0505 ../bin

cp -f -r *.h ../include

[[email protected]]$ cd ../bin

[[email protected]]$ ./chapter0505

please input a value:

100

The value's sum:5050

以上例項主要實現1max使用者輸入的最大值之間數相加取和的功能,根據使用者輸入的迴圈最大值maxfor迴圈測試條件。當用戶輸入max值後,進入for迴圈操作部分,首先在for迴圈內部定義整型i並初始化為0,該操作在整個迴圈結構中只執行一次。隨後執行測試條件,判斷此時變數i是否正確在使用者確定的範圍值之內。如果條件為真,則執行for迴圈體中的操作,將1max之間0i數相加,之後更新條件表示式值,再繼續判斷for迴圈的測試條件,如果為真繼續執行迴圈程式碼體,如果不為真則跳出迴圈體,最後列印1max數和的值sum

相關推薦

C++控制結構-迴圈語句

迴圈語句控制結構在應用程式中主要用於重複執行程式碼體操作,直到條件不滿足的情況下終止。迴圈語句主要包含while、do/while以及for三類控制語句,其基本概念及使用方式將會通過不同的小節分別介紹。 5.3.1  while語句 C++語言提供的控制結構最後一種就是迴圈控制結構,該結構可以讓程式在設定的

《Java從入門到失業》第三章:基礎語法及基本程式結構(3.8):流程控制迴圈語句、while語句、for語句

3.8.2迴圈語句 3.8.2.1while語句        最近這些年買彩票只能去投注站買,早些年,筆者經常是在網上買。在網上買有個功能:追號。就是假如你想一直買同一組號碼,直到中大獎為止。你可以設定一個條件,比如中了頭獎就不繼續買了,如果沒有中頭獎,下一期繼續買同

(7)javascript的程序控制結構語句------(2)循環控制語句、跳轉語句、對話框

對話 ima bsp .cn while語句 prompt 彈出 asc div 一、循環控制語句 循環語句主要就是在滿足條件的情況下反復執行某一個操作,循環控制語句主要包括while語句、do...while語句 和for語句。 1、While

(6)javascript的程序控制結構語句-----(1)條件判斷

江湖 too 分支語句 copy 表達 demo oct alt javascrip 程序控制結構及語句 編程就是將現實應用,轉換為程序能夠讀得懂的語法語句。Javascript編程中對程序流程控制主要是通過條件判斷語句、循環控制語句及continue、break來完成的

以猜數字遊戲為例理解C語言while迴圈語句和if條件

迴圈語句和條件語句是程式語言的基礎, 而while迴圈語句與if條件語句是條件語句和迴圈語句的基礎. 因此我們在學習C語言的開始要好好學習與認真思考著兩個語句. 本次將藉助簡單的猜數字遊戲開幫助大家理解. 首先我們會讓系統隨機獲得一個數字,然後讓玩家輸入一個數字,系統會提醒是"高了"

3 條件控制迴圈語句&函式&面向物件程式設計&模組&包&檔案和異常

if if condition:T_execute if condition:T_execute else:F_execute if condition1:condition1_execute elif condition2:condition2_exec

Java--流程控制迴圈語句

前言 迴圈語句可以在滿足迴圈條件的情況下,反覆執行某一段程式碼,這段被重複執行的程式碼被稱為迴圈體語句,當反覆執行這個迴圈體時,需要在合適的時候把迴圈判斷條件修改為false,從而結束迴圈,否則迴圈將一直執行下去,形成死迴圈。 內容 1. for – 迴圈語句

3 條件控制迴圈語句&函式&面向物件程式設計&模組&包&檔案和異常

繼承:程式中當我們定義一個class的時候,可以從某個現有的class繼承,新的class稱之為子類(Subclass),而被繼承的class稱之為基類、父類或超類;子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法 class 子類(父類): def __init__(self,...):

scala學習之內建控制結構->for語句

  scala初學者,高手勿噴 O(∩_∩)O~ For 表示式 一、列舉集合類 程式碼: val fileHere = (new java.io.File("c:\\")).listFiles for(file <- fileHere)  println(file)

第八節、AHK流程控制迴圈語句

AHK流程控制之迴圈語句 執行一系列重複的操作:迴圈 一、loop 迴圈 1、Loop,count Count:指定迴圈的次數,如果省略了,它就無限迴圈,可使用break或return關鍵字退出迴圈

C 資料結構迴圈連結串列(帶環連結串列)基本操作

經典迴圈連結串列之約瑟夫問題:標號從1到n的n個人圍成一個圈,從1開始計數到m的人退出圈子,然後從退出的下一個人開始接著從1計數,數到m的人後繼續退出,最後只剩下一個人,求剩下人的編號。這便是約瑟夫問題的模型。 經典迴圈連結串列之魔術師發牌問題:魔術師手中有A、2、3……J

c語言-----用迴圈語句實現金字塔,左對齊

c語言中的迴圈語句有三種,while迴圈,do,while迴圈,和for迴圈.    1. while語句    2.for語句    3.do ...while語句 例項:          

C語言for迴圈語句的執行順序

#include<stdio.h> int main() { int i; for(i=0;i<5;i++) { printf("%d\n",i); } return

C++ 控制結構和函式(三)—— 函式II(Functions II)

引數按數值傳遞和按地址傳遞(Arguments passed by value and by reference) 到目前為止,我們看到的所有函式中,傳遞到函式中的引數全部是按數值傳遞的(by value)。也就是說,當我們呼叫一個帶有引數的函式時,我們傳遞到函式中的是變

C++中for迴圈語句簡析

1 for迴圈語句概述 for迴圈語句的語法是 for(初始化語句; 條件語句; 表示式語句) {    執行語句; } 其中,初始化語句用於每次迴圈過程中都要修改的變數進行初始化;而條件語句用來控制

03: 迴圈結構 case語句 、 函式及中斷控制 總結和答疑

Top NSD SHELL DAY03 案例1:使用for迴圈結構 案例2:使用while迴圈結構 案例3:基於case分支編寫指令碼 案例4:使用Shell函式 案例5:中斷及退出 1 案例1:使用for迴圈結構 1.1 問題 本案例要求

第 6章 C控制語句迴圈

迴圈是一個強大的程式設計工具。在建立一個迴圈時應特別注意三個方面: 明確定義結束迴圈的條件 確保在迴圈判斷中使用的值在第一次使用之前已經初始化 確保迴圈在每個週期中更新了判斷值 6.1 while 迴圈 while 語句是一個入口條件迴圈,其一般形式為: whi

Java程式結構、if-else和switch條件選擇、for與while與do-while迴圈及beak和continue控制跳轉語句

Java程式的流程控制 Java流程控制提供了控制程式的基本手段,使得程式能夠按照正確的順序逐步執行,以實現特定的功能。Java流程控制結構分為:順序結構、選擇結構、迴圈結構。 順序結構 Java應用程式都是從main()方法開始執行的。程式一般是按照書寫順序依次向下執行,直

分支語句——c++程式的控制結構1

程式 由若干條語句組成,各語句按照順序一條一條地執行,這種順序結構是簡潔的。但在現實世界中,在解決問題的過程中,不可避免地遇到需要進行選擇戊需要迴圈I作的情況。這時,程式執行的順序需要發生變化,而非從前向後逐一執行。因此程式中除了順序結構以外,通常還有選擇結構迴圈結構以及轉移機制。 if

C語言練習題一: 《C Primer Plus》第六章 C控制語句C迴圈——程式設計練習題 參考答案

1. 編寫一個程式,建立一個包含 26 個元素的陣列,並在其中儲存 26 個小寫字母。然後列印陣列的所有內容。#include<stdio.h> int main() { char alphabet[26]; int i = 0; char