while 循环


C++ 提供while循环式,根据指定的条件式来判断是否执行循环本体,语法如下所示:

while(条件式) {
    语句一;
    语句二;
}

如果循环本体只有一个语句,{}可以省略不写(但不建议);while像是没有起始陈述与终止陈述的for循环,常用于重复性的动作,而停止条件未知何时发生的情况。

例如一个使用者输入接口,使用者可能输入 10 次,也可能输入 20 次,这时循环停止的时机是未知的,可以使用while循环来做这个事。

一个计算输入成绩平均的程序如下所示:

#include <iostream> 
using namespace std; 

int main() { 
    int score = 0; 
    int sum = 0; 
    int count = -1; 

    while(score != -1) { 
        count++; 
        sum += score; 
        cout << "输入分数(-1结束):"; 
        cin >> score; 
    } 

    cout << "平均:" 
         << static_cast<double>(sum) / count 
         << endl; 

    return 0; 
}

执行结果:

输入分数(-1 结束):10
输入分数(-1 结束):20
输入分数(-1 结束):30
输入分数(-1 结束):40
输入分数(-1 结束):50
输入分数(-1 结束):-1
平均:30

在这个程序中,使用者的输入次数是未知的,使用while循环来判断使用者的输入是否为 -1,以作为循环执行的条件。

while循环也称为前测式循环,因为在循环执行前就会进行条件判断,而do while称为后测式循环,它会先执行循环本体,然后再进行条件判断,do while的语法如下所示:

do {
    语句一;
    语句二;
    ....
} while(条件式);

注意do while是以分号(;)作为结束,这个很常被忽略;由于do while会先执行循环,通常用于进行一些初始化化或接口沟通的动作,例如下面这个程序:

#include <iostream> 
using namespace std; 

int main() { 
    int input = 0; 
    bool replay = false; 

    do { 
        cout << "输入整数值:"; 
        cin >> input; 
        cout << "输入数为奇数?" << (input % 2 ? 'Y': 'N') << endl; 
        cout << "继续(1:继续 0:结束)?"; 
        cin >> replay; 
    } while(replay); 

    return 0; 
}

执行结果:

输入整数值:11
输入数为奇数?Y
继续(1:继续 0:结束)?0




展开阅读全文