C语言中的控制语句(循环语句while、for)

循环语句

  • 什么是循环
    • 重复执行代码
  • 为什么需要循环
  • 循环的实现方式
    • while
    • do...while
    • for

while语句

 语法格式:

while (条件) {
    循环体
    ……
}

需求:跑步5圈

示例代码:

#include <stdio.h>

int main() {
    // 需求跑步5圈
    // 1. 条件变量的定义
    int i = 1;
    // 2. while 控制重复的次数
    while (i <= 5) {
        // 3. 打印跑步第几圈
        printf("跑步第 %d 圈\n", i);
        // 4. 条件改变
        i++;
    }

    return 0;
}

do...while语句

语法格式:

do {
    循环体
    ……
} while (条件);
  • do-while 循环语句是在执行循环体之后才检查 条件 表达式的值
  • 所以 do-while 语句的循环体至少执行一次,do…while也被称为直到型循环

需求:跑步5圈

示例代码:

#include <stdio.h>

int main() {
    // 需求跑步5圈
    // 1. 条件变量的定义
    int i = 1;
    do {
        // 2.1 打印跑步第几圈
        printf("跑步第 %d 圈\n", i);
        // 2.2 条件改变
        i++;
    } while ( i <= 5 ); // 3. 控制重复的次数

    return 0;
}

 for语句

语法格式:

for ( init; condition; increment ) {
	循环体
}
  • init会首先被执行,且只会执行一次
  • 接下来,会判断 condition,如果条件condition为真
  • 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句
  • 条件再次被判断

需求:跑步5圈

示例代码:

#include <stdio.h>

int main() {
    // 需求跑步5圈
    for (int i = 1; i <= 5; i++) {
        printf("跑步第 %d 圈\n", i);
    }

    return 0;
}

 死循环

  • 条件永远为真的循环就是死循环
  • 示例代码
​
#include <stdio.h>

int main() {
    // while (1) {
    //     printf("根本停不下来\n");
    // }

    for(;;) {
        printf("根本停不下来\n");
    }

    return 0;
}

​

循环案例

实现1+2+3……100所有数字的累加

#include <stdio.h>

int main() {
    // 需求:实现1+2+3……100所有数字的累加
    // 定义条件变量初始值为1
    int i = 1;
    // 定义累加变量,初始值为0
    int sum = 0;
    // 循环控制100次
    while (i <= 100) {
        // 累加
        sum += i;
        // 条件改变
        i++;
    }
    // 循环外面,打印最终的累加和
    printf("sum = %d\n", sum);

    // for循环实现
    int temp = 0;
    for (int i = 1; i <= 100; i++) {
        temp += i;
    }
    printf("temp = %d\n", temp);

    return 0;
}

循环嵌套

需求如下:

通过for循环嵌套打印内容:
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * * 
说明:
1)每行有5个*,总共有5行
2)*之间有空格隔开
3)printf()1次只能打印1个*

示例代码:

#include <stdio.h>

int main() {
    for (int i = 0; i <= 4; i++) {
        for (int j = 0; j <= 4; j++) {
            printf("* ");
        }
        printf("\n");
    }

    return 0;
}

跳转关键字

  • 循环和switch专属的跳转:break
  • 循环专属的跳转:continue
  • 无条件跳转:goto

break

  • 循环的break说明
    • 某一条件满足时,不再执行循环体中后续重复的代码,并退出循环
  • 需求:一共吃5碗饭, 吃到第3碗吃饱了, 结束吃饭动作

示例代码:

#include <stdio.h>

int main() {
    // 需求: 一共吃5碗饭, 吃到第3碗吃饱了, 结束吃饭动作
    // 1. 定义条件变量,为了查看方便, 计数器从 1 开始
    int i = 1;
    while (i <= 5) { // 2. 控制条件
        if (i == 3) {
            printf("吃饱了,不吃了\n");
            break; // 结束循环,退出循环
        }
        
        printf("吃第 %d 碗饭\n", i);
        // 3. 条件变量改变
        i++;
    }

    return 0;
}

continue

  • 某一条件满足时,不再执行本次循环体中后续重复的代码,但进入下一次循环判断
    • while循环,continue 之前一定要修改计数器(条件变量),否则,导致死循环
  • 需求:一共吃5个苹果,吃到第3个遇到虫子,这个跳过不吃,下一个继续

示例代码:

#include <stdio.h>

int main() {
    // 需求: 一共吃5个苹果,吃到第3个遇到虫子,这个跳过不吃,下一个继续
    // 1. 定义条件变量,为了查看方便, 计数器从 1 开始
    int i = 1;
    while (i <= 5) { // 2. 控制条件
        if (i == 3) {
            printf("这个有虫子,不吃了\n");
            i++;    // continue 之前一定要修改计数器(条件变量),否则,导致死循环
            continue;; // 跳过本次循环,下次继续
        }
        
        printf("吃第 %d 个苹果\n", i);
        // 3. 条件变量改变
        i++;
    }

    return 0;
}

goto

  • goto用于无条件跳转
    • 在一种情况下可以使用goto语句:从一组嵌套的循环中跳出
  • goto语句可以导致代码不易理解和维护,并且容易引入不必要的错误。因此,除非必要,最好不要使用goto语句

示例代码:

#include <stdio.h>

int main() {

    int i = 0;
    while (i < 3) {
        if(i == 1) {
            goto End;	// 跳转到End标签
        }
        printf("i = %d\n", i);
        i++;
    }
    
    End:
        printf("this is ending!\n");

    return 0;
}

相关推荐

  1. C语言】分支循环语句

    2024-04-21 16:28:03       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 16:28:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 16:28:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 16:28:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 16:28:03       18 阅读

热门阅读

  1. 数据结构递归算法总结

    2024-04-21 16:28:03       13 阅读
  2. VSCode和CMake实现C/C++开发

    2024-04-21 16:28:03       16 阅读
  3. 小记一篇 vuecli4项目 打包内存溢出问题

    2024-04-21 16:28:03       12 阅读
  4. 线上出现问题后如何排查呢

    2024-04-21 16:28:03       13 阅读
  5. C及C++标准与QT版本介绍

    2024-04-21 16:28:03       13 阅读
  6. Qt : 如何解决重载引起的歧义

    2024-04-21 16:28:03       14 阅读