1. 程式人生 > >《C++ Primer Plus》學習筆記——第五章 迴圈和關係表示式(二)

《C++ Primer Plus》學習筆記——第五章 迴圈和關係表示式(二)

while迴圈

while迴圈是沒有初始化和更新部分的for迴圈,它只有測試條件和迴圈體。

while (test-condition)
{
    body;
}
//當test-condition為true,即不為0時,執行迴圈體。

編寫延時迴圈

long wait=0;
while (wait<10000)
    wait++;

此延時迴圈略顯粗糙,精度不夠。

若追求精度可使用clock()函式和標頭檔案ctime來建立延遲迴圈。

#include <iostream>
#include <ctime>

int main ()
{
    using namespace std;
    cout<<"Enter the delay time,in seconds:";
    float secs;
    cin>>secs;                                //讀取延時多少秒
    clock_t delay=secs*CLOCKS_PER_SEC;        //符號常量CLOCKS_PER_SEC,該常量等於每秒鐘包含的                                            
                                              //系統時間單位數。
    cout<<"starting\a\n";
    clock_t start=clock();
    while (clock()-start<delay); //開始延時
    cout<<"done \a\n";
    return 0;
}

do while 迴圈

do while 迴圈先進行迴圈,再進行判斷。此為出口條件迴圈。

do while迴圈和while迴圈,適用於不同的情況。

do
{
    body;
}while(test-expression);

基於範圍的for迴圈(C++11)

double prices[5]={4.99,10,7.8,5.67};
for (double x :prices)
    cout<<x<<std::endl;
//x表示陣列的第一個元素。不斷迴圈,x依次表示其他元素,知道結束。
//上面無法對陣列元素進行修改,若要修改必須用到引用&。

for (double &x :prices)
    x=x*0.8;