日志9
while循环
1. 基本概念与语法
while循环是C++中的一种循环结构,它会在条件为真的情况下,反复执行循环体中的代码。语法如下:
while (条件表达式) {
// 循环体语句
}
其中,“条件表达式”是一个布尔表达式,它决定了循环是否继续执行。只要这个表达式的值为true,循环体中的语句就会被执行;当这个表达式的值变为false时,循环结束。
2. 执行流程
程序首先判断“条件表达式”的值。
如果值为true,则执行循环体中的语句。循环体执行完毕后,程序会再次判断“条件表达式”的值,若还是true,则继续执行循环体,如此反复。
一旦“条件表达式”的值为false,循环结束,程序继续执行while循环后面的语句。
3. 例子 计算1到100的整数之和:
#include <iostream>
using namespace std;
int main() {
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
cout << "1到100的整数之和为:" << sum << endl;
return 0;
}
在这个例子中,首先初始化变量i为1,sum为0。然后,while循环的条件表达式i <= 100为true,所以进入循环体。在循环体中,将i的值累加到sum中,然后i的值增加1。当i的值超过100时,条件表达式变为false,循环结束,最后输出sum的值。
4. 注意事项
一定要确保循环条件在某个时候会变为false,否则会导致死循环。例如,如果在上述代码中忘记了i++这一步,i的值将永远是1,while循环的条件i <= 100将一直为true,程序就会陷入死循环。
循环体可能一次都不执行。如果while循环开始时条件表达式的值就是false,那么循环体中的语句不会被执行。例如,将上述代码中的i初始化为101,那么循环体就不会被执行。
5. 与for循环的比较
while循环和for循环在很多情况下可以相互转换。for循环更适用于已知循环次数的情况,它将循环的初始化、条件判断和变量更新都集中在循环头部,结构比较清晰。while循环则更侧重于表达“当某个条件为真时执行循环”这种逻辑,在循环次数不确定,而是依赖于某个条件的情况下使用起来更加自然。例如,在读取文件内容直到文件末尾的场景中,使用while循环就比较合适。
do-while循环
1. 基本概念
do - while循环是C++中的一种循环结构。与while循环不同的是,它先执行一次循环体中的语句,然后再判断循环条件是否成立。如果条件成立,就继续执行循环体;如果条件不成立,则结束循环。
2. 语法结构
do { // 循环体语句 } while (条件表达式);
注意,while后面的分号;是do - while循环语法的一部分,不能省略。
3. 示例代码(简单计数)
#include <iostream>
int main() {
int i = 1;
do {
std::cout << i << " ";
i++;
} while (i <= 5);
std::cout << std::endl;
return 0;
}
在这个示例中,首先会执行do后面的循环体,输出1,然后i自增为2。接着判断while中的条件i <= 5是否成立,因为2 <= 5成立,所以继续执行循环体,依次输出2、3、4、5。当i变为6时,6 <= 5不成立,循环结束。
4. 应用场景
用户输入验证:当需要确保用户至少输入一次数据,并根据输入内容决定是否继续循环时,do - while循环很有用。
例如,要求用户输入一个大于0的整数:
#include <iostream>
using namespace std;
int main() {
int num;
do {
cout << "请输入一个大于0的整数: ";
cin >> num;
} while (num <= 0);
cout << "你输入的整数是: " << num << endl;
return 0;
}
这样,即使用户第一次输入不符合要求(小于等于0),程序也会要求用户重新输入,直到输入满足条件为止。
在do while循环中使用break和continue语句的方法
break语句在do - while循环中的使用
功能:break语句用于立即终止do - while循环,无论循环条件是否为真,程序都会跳出循环,继续执行循环体后面的语句。
例子
#include <iostream>
int main() {
int i = 1;
do {
if (i == 3) {
break;
}
std::cout << i << " ";
i++;
} while (i <= 5);
std::cout << "循环结束" << std::endl;
return 0;
}
在这个例子中,do - while循环原本会在i <= 5的条件下执行。但是当i等于3时,遇到break语句,循环立即终止,输出结果为1 2,然后输出循环结束。
continue语句在do - while循环中的使用
功能:continue语句用于跳过当前循环体中continue语句之后的剩余语句,直接进入下一次循环的条件判断部分。
例子
#include <iostream>
int main() {
int i = 1;
do {
i++;
if (i == 3) {
continue;
}
std::cout << i << " ";
} while (i <= 5);
std::cout << "循环结束" << std::endl;
return 0;
}
在这个例子中,当i等于3时,执行continue语句,会跳过std::cout << i << " ";这一行,直接进入下一次循环的条件判断。所以输出结果为2 4 5,然后输出循环结束。