循环语句

概念讲解

for 循环

123for (int i = 0; i < n; i++) {
    // 循环体
}

while 循环

12345int i = 0;
while (i < n) {
    // 循环体
    i++;
}

do-while 循环

12345int i = 0;
do {
    // 循环体
    i++;
} while (i < n);

break 和 continue

12345678910111213// break 跳出循环
for (int i = 0; i < n; i++) {
    if (i == 5) break;
    cout << i << " ";
}
// 输出: 0 1 2 3 4

// continue 跳过本次循环
for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) continue;
    cout << i << " ";
}
// 输出: 1 3 5 7 9

考点分析

初赛考查方式

  1. 选择题: 循环执行次数
  2. 程序阅读: 循环输出
  3. 填空题: 循环条件

常见题型

  • 循环执行次数
  • 嵌套循环
  • 循环控制

例题精讲

例题 1:求和

题目: 计算 1~n 的和。

解答:

1234int sum = 0;
for (int i = 1; i <= n; i++) {
    sum += i;
}

例题 2:嵌套循环

题目: 输出九九乘法表。

解答:

123456for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        cout << j << "x" << i << "=" << i * j << "\t";
    }
    cout << endl;
}

练习题

  1. 计算 1~100 中所有偶数的和。
查看答案
12345int sum = 0;
for (int i = 2; i <= 100; i += 2) {
    sum += i;
}
cout << sum << endl;  // 输出 2550
  1. 输出所有三位数的水仙花数。
查看答案
123456789for (int i = 100; i <= 999; i++) {
    int a = i / 100;        // 百位
    int b = (i / 10) % 10;  // 十位
    int c = i % 10;         // 个位
    
    if (a * a * a + b * b * b + c * c * c == i) {
        cout << i << endl;  // 输出 153, 370, 371, 407
    }
}
  1. 求 n 的阶乘。
查看答案
12345long long factorial = 1;
for (int i = 1; i <= n; i++) {
    factorial *= i;
}
cout << factorial << endl;

注意:阶乘增长很快,n > 20 时需要使用 long long 或大数运算。

易错点

⚠️ 注意:

  1. for 循环的三个表达式都可以省略
  2. while 循环要注意更新条件
  3. break 跳出整个循环,continue 跳过本次循环
  4. 注意循环变量的作用域