c语言循环程序

一、for循环

1. 基本语法
for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体
}
  • 执行流程
    1. 执行初始化表达式(仅一次)
    2. 检查条件表达式,若为真则执行循环体
    3. 执行更新表达式
    4. 重复步骤 2 和 3,直到条件为假
2. 示例:打印 1 到 10 的整数
#include <stdio.h>

int main() {
    int i;
    for (i = 1; i <= 10; i++) {
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
3. 高级用法
  • 省略初始化表达式

    int i = 1;
    for (; i <= 10; i++) { ... }
    
  • 省略更新表达式

    for (int i = 1; i <= 10;) {
        printf("%d ", i);
        i++;  // 更新在循环体内完成
    }
    
  • 多重循环

    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 3; j++) {
            printf("(%d,%d) ", i, j);
        }
        printf("\n");
    }
    

二、while循环

1. 基本语法
while (条件表达式) {
    // 循环体
}
  • 执行流程
    1. 检查条件表达式,若为真则执行循环体
    2. 重复步骤 1,直到条件为假
2. 示例:计算 1 到 100 的和
#include <stdio.h>

int main() {
    int sum = 0;
    int i = 1;
    while (i <= 100) {
        sum += i;
        i++;
    }
    printf("1到100的和为: %d\n", sum);
    return 0;
}
3. 注意事项
  • 避免无限循环:确保循环条件最终会变为假

    // 错误示例:无限循环
    while (1) {
        printf("这是一个无限循环\n");
    }
    
  • 循环控制变量的初始化:在进入循环前初始化控制变量

三、do-while循环

1. 基本语
do {
    // 循环体
} while (条件表达式);
  • 执行流程
    1. 执行循环体
    2. 检查条件表达式,若为真则重复执行循环体
  • 特点:循环体至少执行一次
2. 示例:猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int number, guess;
    srand(time(NULL));  // 初始化随机数种子
    number = rand() % 100 + 1;  // 生成1-100的随机数
    
    do {
        printf("猜一个1-100的数字: ");
        scanf("%d", &guess);
        
        if (guess > number) {
            printf("猜大了!\n");
        } else if (guess < number) {
            printf("猜小了!\n");
        } else {
            printf("恭喜,猜对了!\n");
        }
    } while (guess != number);
    
    return 0;
}

四、循环控制语句

1. break语句
  • 功能:立即终止整个循环,跳出循环体
  • 示例
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break;  // 当i等于5时终止循环
        }
        printf("%d ", i);
    }
    // 输出:1 2 3 4
    
2. continue语句
  • 功能:跳过当前循环的剩余部分,直接进入下一次循环
  • 示例
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;  // 当i为偶数时跳过后续代码
        }
        printf("%d ", i);
    }
    // 输出:1 3 5 7 9
    
3. goto语句
  • 功能:无条件跳转到指定标签处
  • 示例

    int i = 1;
    loop:
    printf("%d ", i);
    i++;
    if (i <= 10) {
    goto loop;
    }


### 五、循环嵌套

#### 1. 示例:打印九九乘法表
```c
#include <stdio.h>

int main() {
  int i, j;
  for (i = 1; i <= 9; i++) {
      for (j = 1; j <= i; j++) {
          printf("%d×%d=%-3d", j, i, i*j);  // %-3d表示左对齐,宽度为3
      }
      printf("\n");
  }
  return 0;
}
2. 示例:打印金字塔图案
#include <stdio.h>

int main() {
    int rows, i, j, space;
    printf("输入行数: ");
    scanf("%d", &rows);
    
    for (i = 1; i <= rows; i++) {
        // 打印空格
        for (space = 1; space <= rows - i; space++) {
            printf(" ");
        }
        // 打印星号
        for (j = 1; j <= 2 * i - 1; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

六、循环结构的比较

特点forwhiledo-while
适用场景已知循环次数未知循环次数,先判断未知循环次数,先执行
执行次数0 次或多次0 次或多次至少 1 次
语法复杂度适合复杂控制逻辑适合简单条件判断适合需要至少执行一次的场景

七、循环设计的最佳实践

  1. 避免无限循环:确保循环条件最终会变为假

  2. 初始化控制变量:在循环前初始化控制变量

    // 错误示例
    while (i < 10) { ... }  // i未初始化
    
    // 正确示例
    int i = 0;
    while (i < 10) { ... }
    
  3. 循环变量更新:确保循环变量在每次迭代中被更新

    // 错误示例:i未更新,导致无限循环
    for (int i = 0; i < 10;) { ... }
    
    // 正确示例
    for (int i = 0; i < 10; i++) { ... }
    
  4. 简化循环条件:保持条件表达式简洁明了

    // 不推荐
    while (x != 0 && y > 0 && z < 100) { ... }
    
    // 推荐
    bool valid = (x != 0) && (y > 0) && (z < 100);
    while (valid) { ... }
    

  5. 避免深层嵌套:超过 3 层嵌套时考虑重构代码

posted @ 2025-06-27 12:53  RaLi  阅读(0)  评论(0)    收藏  举报  来源