一、while 语句的概念
在 C++ 中有三种循环控制语句,while 语句是其中最基础的一种。它用于在给定条件为 true 时,重复执行一段代码。
二、while 语句的语法形式
while (表达式)
语句Code language: JavaScript (javascript)
其中”语句”可以是单条语句,也可以是用大括号 {} 括起来的复合语句(循环体)。
三、执行顺序
- 首先判断表达式(循环控制条件)的值。
- 若表达式的值为 true(非 0),则执行循环体中的语句。
- 循环体执行完毕后,程序流程回到第 1 步,再次判断表达式的值。
- 若表达式的值为 false(0),则跳过循环体,执行 while 语句之后的下一条语句。
四、注意事项
- 一般来说,在循环体中应该包含能够改变循环条件表达式值的语句。否则,如果条件始终为 true,就会形成无限循环(死循环)。
- while 循环是先判断条件再执行循环体。如果第一次判断时条件就为 false,循环体一次也不会执行。
- 循环体如果包含多条语句,必须用大括号 {} 括起来形成复合语句,否则只有第一条语句属于循环体。
五、代码示例
以下代码演示了 while 语句的实际应用:
#include <iostream>
using namespace std;
int main()
{
// 示例1:求自然数 1~10 之和
int total = 0;
int num = 1;
while (num <= 10)
{
total += num;
num++; // 改变循环条件,避免死循环
}
cout << "1+2+...+10 = " << total << endl; // 输出 55
// 示例2:求 1~100 的累加和
int sum = 0;
int i = 1;
while (i <= 100)
{
sum += i;
i++;
}
cout << "1+2+...+100 = " << sum << endl; // 输出 5050
// 示例3:输入一批正整数,统计个数,输入 0 结束
int count = 0;
int value;
cout << "Enter positive integers (0 to stop): ";
cin >> value;
while (value != 0)
{
count++;
cin >> value;
}
cout << "Total numbers entered: " << count << endl;
// 示例4:计算 n 的阶乘
int n = 5;
int factorial = 1;
int j = 1;
while (j <= n)
{
factorial *= j;
j++;
}
cout << n << "! = " << factorial << endl; // 输出 120
// 示例5:循环体只有一条语句(省略大括号)
int k = 3;
while (k > 0)
cout << "k = " << k-- << endl; // 只有这一条语句属于循环体
// 示例6:条件一开始就不满足,循环体一次也不执行
int m = 10;
while (m < 5)
{
cout << "This will not print" << endl;
m++;
}
return 0;
}Code language: PHP (php)
六、常见错误
1. 忘记更新循环条件导致死循环
int num = 1;
while (num <= 10)
{
total += num;
// 忘记写 num++,num 始终为 1,条件始终为 true,形成死循环
}Code language: JavaScript (javascript)
2. 误加分号导致循环体为空
int num = 1;
while (num <= 10); // 分号使循环体变成空语句
{
total += num;
num++;
}
// 上述大括号中的代码只执行一次,不是循环Code language: JavaScript (javascript)
3. 循环体缺少大括号导致逻辑错误
int num = 1;
while (num <= 5)
cout << num << endl;
num++; // 这条语句不在循环体内,num 始终为 1,死循环Code language: JavaScript (javascript)
Previous: 多重选择结构-switch语句
Next: 循环结构-do…while语句