Logo
Section 1 / 5

循环简介

学习在 C++ 中使用循环实现固定次数的迭代。

导入

循环简介

学习在 C++ 中使用循环实现固定次数的迭代。

重复

在编程中,重复执行一条指令或一组指令是一种常见现象。这种结构被称为循环。例如,假设我们希望程序完成以下任务:

  • 逐行读取文档或数据文件,直到文件末尾
  • 逐像素绘制图像,使用颜色值在屏幕上显示图像
  • 依次遍历一组变量来处理它们的值
  • 通过将公式应用于多个值来计算结果
...

假设我们要显示从 00 到 44 的整数。我们可以简单地使用 cout << 语句逐个输出这些数字。我们也可以使用一个变量,通过不断改变其值来重复打印该变量的值,如下所示。

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 int a; 7 a = 0; 8 cout << a << endl; 9 a = 1; 10 cout << a << endl; 11 a = 2; 12 cout << a << endl; 13 a = 3; 14 cout << a << endl; 15 a = 4; 16 cout << a << endl; 17 return 0; 18}

上述代码清楚地展示了 cout << a << endl; 的重复使用。使用单个变量的好处是,我们可以将这种重复转换为C++中的循环。

计数控制循环

计数控制循环用于生成一系列数值。它在 for 关键字后包含四个部分,如下所示:

1for (初始化; 条件; 更新) 2{ 3 // 循环体 4}

初始化 用于设置计数器,且仅执行一次。条件 在每次循环开始前检查计数器的值。如果条件为真,则执行循环体;如果为假,则终止循环。更新 用于修改计数器的值,然后再次检查条件。

我们只在前两个部分的末尾使用分号(;),并将它们用括号 ( 和 ) 包裹。在 ) 之后不使用分号。循环体 是需要重复执行的一组语句。

注意: 如果循环体中只有一条语句,则可以省略花括号 { 和 }。

下面的代码使用计数控制循环以更简洁的方式实现了与上面程序相同的输出。

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 for (int a = 0; a < 5; a++) 7 cout << a << endl; // 循环体 8 return 0; 9}

for 循环使第5行和第6行重复执行五次。因此,可以说这个循环有五次迭代。

在上述代码中:

  • 我们使用 int 类型变量 a 作为计数器,并将其初始化为 0。
  • 使用 a < 5 作为条件。
  • 每次迭代后更新 a 的值。
  • 循环体从 ) 之后开始。
  • 循环体中只包含一条语句:cout << a << endl;。

程序中有两行可重复的代码,但当我们展开循环并逐步写出每一步执行过程时,共有11个执行步骤。循环根据条件迭代所有值,以执行循环体中的每一条语句。

让我们举一个生成前五个非负偶数的例子——0, 2, 4, 6, 8。

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 for (int a = 0, e = 0; a < 5; a++) 7 { 8 e = a * 2; // 将值乘以2 9 cout << e << endl; 10 } 11 return 0; 12}

在 for 循环中,可以在初始化部分使用多个变量,用逗号分隔,如上代码第5行所示。

第7至8行 是循环体。

再举一个例子:生成前100个非负偶数:0,2,4,…,1980, 2, 4, \ldots, 198。

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 for (int count = 0; count < 100; count++) 7 { 8 int evenNumber = count * 2; 9 cout << evenNumber << endl; 10 } 11 return 0; 12}

在上述程序中,计数器生成从 00 到 9999 的值,我们将每个值乘以2,输出 0 * 2, 1 * 2, 2 * 2, ..., 99 * 2。第6至9行 构成一个包含两条语句的代码块,代表循环体。

我们也可以通过在计数器中使用增量值 2 来生成相同序列的偶数。可以直接使用 for (int c = 0; c < 200; c += 2),如下程序所示:

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 for (int c = 0; c < 200; c += 2) 7 cout << c << endl; 8 return 0; 9}

如果要生成介于 11 和 700700 之间的 77 的倍数,可以使用 int i = 7; i < 700; i += 7。我们以 7 作为起始值,这样每次增加 7 就能到达下一个 77 的倍数。将其放入 for 循环中,即可将生成的值作为输出显示。

计数控制循环编程练习

以下是几个帮助你练习编写C++程序的例子。点击“显示答案”按钮(在运行代码后),可以看到问题的一种可能解决方案。编程中可能存在多种正确解法。

奇数

编写一个程序,打印前100个正奇数:1,3,5,…,1991, 3, 5, \ldots, 199。

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 // 请在此处编写代码 7 return 0; 8}

你可以在上方的代码编辑器中运行以下代码:

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 for (int i = 1; i <= 100; i++ ) 7 { 8 cout << (i * 2) - 1 << endl; 9 } 10 return 0; 11}

等差数列

等差数列 是一组按顺序排列的数,其中任意相邻两项之间具有相同的差值。

编写一个程序,打印数列 1,6,11,…<1001, 6, 11, \ldots < 100 的各项。

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 // 请在此处编写代码 7 return 0; 8}

你可以在上方的代码编辑器中运行以下代码:

1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 for (int i = 1; i < 100; i += 5) 7 { 8 cout << i << endl; 9 } 10 return 0; 11}

n的乘法表

编写一个程序,接收用户输入的一个整数,并打印其前20个倍数的乘法表,如下所示。

示例输入

15

示例输出

15 x 1 = 5 25 x 2 = 10 3 4. 5 6. 7 8. 9 105 x 20 = 100
1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 int num = 0; 7 int result; 8 cout << "请输入一个数字: "; 9 cin >> num; 10 for (int i = 1; i < 21; i++) 11 { 12 result = num * i; 13 cout << num << " x " << i << " = " << result << endl; 14 } 15 return 0; 16}

在上述程序中:

  • 输入值存储在变量 num 中。
  • for 循环从 1 到 20 运行,输出结果。result 通过将 i 与 num 相乘计算得出。

n个输入的平均值

编写一个程序,计算用户输入数字的平均值。程序首先询问用户想要计算多少个数的平均值。输入的数量必须大于 00。

示例输入

14 210 320 430 540

示例输出

1平均值为:25
1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 double values = 0; 7 int sumOfValues = 0; 8 int v = 0; 9 cout << "请输入要输入的数值个数:"; 10 cin >> values; 11 for (int i = 1; i <= values; i++) 12 { 13 cout << "请输入第" << i << "个值:"; 14 cin >> v; 15 sumOfValues += v; 16 } 17 if (values > 0) 18 { 19 cout << "平均值为:" << sumOfValues / values << endl; 20 } 21 return 0; 22}

在上述程序中:

  • 用户输入一个双精度浮点数 values。
  • 在 for 循环的每次迭代中,将用户输入的每个值累加到 sumOfValues。
  • 平均值通过简单的公式计算:sumOfValues 除以 values 中存储的数值个数。

用户输入数的所有因数

编写一个程序,显示用户输入数字的所有因数。

示例输入

120

示例输出

11 22 34 45 510 620
1#include <iostream> 2using namespace std; 3 4int main() 5{ 6 int num = 0; 7 cout << "请输入一个数字:" << endl; 8 cin >> num; 9 for (int i = 1; i < num + 1; i++){ 10 if (num % i == 0){ 11 cout << i << endl; 12 } 13 } 14 return 0; 15}

是否为质数

质数 是只能被自身和 11 整除的自然数。

编写一个程序,判断用户输入的自然数是否为质数。

示例输入1

17

示例输出1

17 是一个质数

示例输入2

120

示例输出2

120 不是一个质数

C++ 基础

哨兵循环