1、循环
只要达到指定条件,循环就可以执行代码块。循环很方便,因为它们可以节省时间,减少错误并且使代码更具可读性。
循环是一种控制结构,用于反复执行一段代码,直到满足某种条件。循环在许多编程场景中被广泛使用,如遍历数组、处理数据、实现算法等。
2、C++ while 循环
只要指定条件为true
,while
循环就会循环遍历一段代码:
语法
while (condition)
{
// 要执行的代码块
}
在下面的示例中,只要变量(i
)小于5,循环中的代码就会一次又一次地运行:
例如:
#include <iostream>
using namespace std;
int main() {
int i = 1;
while (i <= 5) {
cout << i << " ";
i++;
}
return 0;
}
注意:一定要改变while
条件中使用的变量,否则循环将不会结束。
3、do while 循环语句
do-while
循环是一种后测试循环结构,保证循环体至少执行一次,然后再检查条件是否满足。即使条件一开始为假,do-while
循环也会先执行一次循环体,然后再判断是否继续。
语法
do {
// 要执行的代码块
}
while (condition);
下面的示例使用do while
循环。即使while
条件为false
,循环也将至少执行一次,因为代码块是在条件判断之前执行的:
例如,
#include <iostream>
using namespace std;
int main() {
int i = 1;
do {
cout << i << " ";
i++;
} while (i <= 5);
return 0;
}
注意:不要忘记改变条件中使用的变量,否则循环将会一直执行下去,不会结束。
4、break 关键字
C++中,while
循环语句与break
语句的结合使用可以让我们在特定条件满足时退出循环。break
用于立即中断循环,无论循环条件是否为真。
break
跳出最里层的循环,并且继续执行该循环下面的语句。
例如,
#include <iostream>
using namespace std;
int main() {
int count = 0;
// while循环,初始条件为true,因此循环会一直执行
while (true) {
cout << "Count is: " << count << endl;
count++;
// 如果 count 达到 5,使用 break 语句退出循环
if (count == 5) {
cout << "Breaking out of the loop as count reached 5." << endl;
break; // 立即中断循环
}
}
cout << "Loop ended." << endl;
return 0;
}
5、continue 关键字
C++中,continue
语句用于跳过当前循环迭代中的剩余代码,直接进入下一次循环迭代。在while
循环中,continue
语句会使程序立即跳回到循环条件的检查部分,而不执行continue
之后的语句。
在 while
或者 do while
循环中,程序立即跳转到表达式的判断语句。
#include <iostream>
int main() {
int i = 0;
while (i < 10) {
i++; // 增加 i 的值
// 如果 i 是偶数,跳过本次循环迭代
if (i % 2 == 0) {
continue;
}
// 打印 i 的值(仅奇数会被打印)
std::cout << "i = " << i << std::endl;
}
return 0;
}
6、使用示例
输入数字并求和,直到输入负数停止,用户可以输入一组正数进行累加求和。当用户输入0时,跳过该迭代;当用户输入负数时,停止输入并输出总和。
#include <iostream>
using namespace std;
int main() {
int number;
int sum = 0;
do {
cout << "Enter a positive number (negative number to stop): ";
cin >> number;
if (number < 0) {
// 当输入负数时,退出循环
break;
}
if (number == 0) {
// 如果输入0,跳过本次循环,继续下一个迭代
continue;
}
// 累加输入的数字
sum += number;
} while (true); // 无限循环,直到 break 终止
cout << "Total sum of positive numbers: " << sum << endl;
return 0;
}