C++循環語句


今天介紹的是程序中三個基本控制結構(順序,分支,循環)的最后一個:循環。

只要三種基本的控制結構就能夠表達用一個入口和一個出口框圖表達的任何程序邏輯。所以在寫程序的時候,要盡量避免使用GOTO語句,只用三種基本的控制結構。

寫循環語句要有下面三個步驟:

  • 需要重復的語句,即循環體
  • 用循環語句包含循環體
  • 循環條件,即什么時候跳出循環

WHILE循環

while循環的語法如下:

while(loop-condition) {
    //loop body    
}

loop-condition是循環條件,是一個bool類型的變量。當loop-condition為true時,就會執行{……}內的循環體。舉個例子:

int sum = 0, i = 1;

//循環4次,第5次時,i = 5,i < 5為false
while (i < 5) {
    sum += i;
    i++;
}

cout << "5以內的數之和為:" << sum << endl;
//結果為:5以內的數之和為:10

如果你想要用戶確認后再循環:

char loop = 'Y';
while (loop == 'Y') {
    //loop body
    cout << "執行" << endl;
    cout << "Do you want to continue? Yes(y or Y) or No(n or N): ";
    cin >> loop;
    //toupper()函數再<cctype>頭文件中,把單個字符轉換為大寫
    loop = toupper(loop);
}

執行結果:

DO-WHILE循環

do-while的基本語法:

do {
    //loop body
} while (loop-condition);

注意最后的分號!

do-while循環和while基本相同,區別僅在於do-while先執行循環體,再判斷條件,如果條件為真,則繼續執行。

上面的例子用do-while循環重構一下:

int sum = 0, i = 1;

//循環4次,第5次時,i = 5,i < 5為false
do {
    sum += i;
    i++;
}while (i < 5);

cout << "5以內的數之和為:" << sum << endl;
//結果為:5以內的數之和為:10

FOR循環

for循環是編程時最常用的循環格式,語法如下:

for (initial-action; loop-condition; action-after-each-iteration) {
    //loop body
}

解釋一下三個參數:

initial-action是初始化動作,即初始化循環時需要的變量

loop-condition是循環條件,為true時執行循環體

action-after-each-iteration是每次迭代后的動作,即執行完一次循環體后的操作,一般是i++

上面的例子用for循環重構一下:

int sum = 0;

//循環4次,第5次時,i = 5,i < 5為false
for (int i = 1; i < 5; i++) {
    sum += i;
}

cout << "5以內的數之和為:" << sum << endl;
//結果為:5以內的數之和為:10

當然,如果要初始化的動作在前面寫也可以:

int sum = 0, i = 1;

//此時i的作用域為整個生命周期,而不是for循環
for (; i < 5; i++) {
    sum += i;
}

cout << "5以內的數之和為:" << sum << endl;
//結果為:5以內的數之和為:10

同理,如果沒有后續執行的操作,action-after-each-iteration可以不寫

int sum = 0, i = 1;

//循環4次,第5次時,i = 5,i < 5為false
for (; i < 5;) {
    sum += i;
    i++;
}

cout << "5以內的數之和為:" << sum << endl;
//結果為:5以內的數之和為:10

break和continue

這是C++的兩個關鍵字。

break用來跳出整個控制語句(如while,switch...),continue用來跳過一次迭代。

(迭代就是當前執行的這一次)

break:

for (int i = 0;i < 10; i++) {
    if (i == 5) {
        //當i=5時,跳出整個循環
        break;
    }
cout << i << endl;
}

執行結果:

從數字5之后就沒有了,因為跳出了整個大的循環

 

 

 continue:

for (int i = 0;i < 10; i++) {
    if (i == 5) {
        //當i=5時,跳過本次循環
        continue;
    }
    cout << i << endl;
}

執行結果:

 

 只是沒有數字五,因為i = 5時,跳過了本次循環

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM