第5章 循环和关系表达式
学习如何教会计算机重复执行任务。本章我们将探索 `for`、`while` 等循环结构,让程序变得更强大、更智能。
环节 1:三步走机器人 (for 循环)
`for` 循环就像一个指令清晰的机器人,你只需告诉它三件事:**从哪开始** (初始化),**到哪结束** (测试条件),以及**每步怎么走** (更新),它就能精确地重复任务。
#include <iostream>
int main() {
// for (1. 初始化; 2. 测试条件; 3. 更新)
for (int i = 0; i < 5; i++) {
std::cout << "报数!" << std::endl;
}
return 0;
}
`for` 循环模拟器 🤖
点击“下一步”按钮,观察“三步走机器人”如何执行一个从0数到4的循环。
int i = 0;
i < 5;
i++
> Console Output:
环节 2:条件守卫 (while 循环)
`while` 循环就像一个忠诚的“条件守卫”。它会**先检查条件**,只有条件为真,才允许执行循环内的代码。只要条件一直为真,它就会一直重复放行。
Cleo 的投资计算器 💰
Cleo 投资了 $100,年复利 5%。她的目标是达到 $150。`while` 循环会一直计算,直到她的资金达标。
> 等待计算...
double cleo_funds = 100.0;
int years = 0;
// 只要资金还没达到 150...
while (cleo_funds < 150.0) {
cleo_funds = cleo_funds * 1.05;
years++;
}
std::cout << years << " 年后达标";
环节 3:俄罗斯套娃 (嵌套循环)
当一个循环被放在另一个循环内部时,就形成了**嵌套循环**,就像一个俄罗斯套娃。外层循环每执行一圈,内层循环就要完整地执行一整轮。这对于处理表格、地图等二维结构非常有用。
#include <iostream>
int main() {
int n = 4;
// 外层循环控制行
for (int i = 1; i <= n; i++) {
// 内层循环1: 打印点
for (int j = 0; j < n - i; j++) {
std::cout << ".";
}
// 内层循环2: 打印星号
for (int k = 0; k < i; k++) {
std::cout << "*";
}
std::cout << std::endl;
}
return 0;
}
图案绘制器 🎨
输入你想要的三角形行数,看看嵌套循环是如何绘制出精确的图案的。
终点站:编程挑战
练习 1:范围求和
任务:
编写一个程序,要求用户输入两个整数。程序计算并输出这两个整数之间(包括它们自身)所有整数的和。
预期知识点:
`for` 循环结构,变量初始化,组合赋值运算符。
点击查看参考答案
#include <iostream>
using namespace std;
int main() {
int start_num, end_num;
long total = 0;
cout << "请输入第一个整数: ";
cin >> start_num;
cout << "请输入第二个整数: ";
cin >> end_num;
for (int i = start_num; i <= end_num; i++) {
total += i;
}
cout << start_num << " 到 " << end_num
<< " 的和是: " << total << endl;
return 0;
}
练习 2:计算增长年限
任务:
Cleo 投资 $100,每年按 5% 复利增长。请计算多少年后,她的投资将达到 $150?
预期知识点:
`while` 循环,关系表达式,浮点数运算。
点击查看参考答案
#include <iostream>
using namespace std;
int main() {
const double TARGET = 150.0;
double cleo_funds = 100.0;
int years = 0;
while (cleo_funds < TARGET) {
cleo_funds = cleo_funds * 1.05;
years++;
}
cout << "共需要 " << years << " 年。" << endl;
return 0;
}
练习 3:嵌套循环绘图
任务:
编写一个程序,要求用户输入一个整数 N(行数)。程序绘制一个 N 行的三角形图案。第 i 行包含 i 个星号 (*),星号前面用句点 (.) 填充,使每行总长度为 N。
预期知识点:
嵌套 `for` 循环,控制外层和内层循环的变量。
点击查看参考答案
#include <iostream>
using namespace std;
int main() {
int rows;
cout << "请输入行数 N: ";
cin >> rows;
for (int i = 1; i <= rows; i++) {
for (int j = 0; j < rows - i; j++) {
cout << ".";
}
for (int k = 0; k < i; k++) {
cout << "*";
}
cout << endl;
}
return 0;
}