跳转至

四、循环 Loop

本章节讲述的是C语言三大结构之一,循环结构。

三种循环

循环,顾名思义就是对某一块代码进行循环操作,当然在程序中的循环操作是可以被终止的,有次数的,并不是无限的。

比如,我想要输出10行 “你好,uit”

我们可以写成

#include<stdio.h>
int main(){
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
    printf("你好,uit\n");
}

这么写确实可以完成任务,但是如果程序要输出成百上千条只改变某些数据数值的时候,难道还要一个一个去打出来吗?

很显然不是,所以引出了循环的重要性,合理利用循环可以使代码更加简洁高效,但会涉及到时间复杂度问题(在数据结构中将会接触,再次不做解释)

让我们来看循环的三种方式

#include<stdio.h>
int main(){
// for循环
// 作为最基础的循环,我们首先来看for循环的格式
    for(int i = 0;i<10;i++){
    printf("这是第%d次输出\n",i);
    }
// 这段代码会输出10次语句,但是里面的数字是从0开始到9,让我们来拆解循环结构
// 把for后面括号的内容分为三部分
// 第一部分是 定义循环开始的条件
// 第二部分是 定义循环执行的条件
// 第三部分是 每次循环后做的操作
// 第一步部分只运行一次,而二三部分在循环结束之前会一直运行
// 通俗一点来理解就是一直在做询问
// 首先我们声明了 我们的变量i为0 , 然后进入到第二部分 :0是否小于10 ,结果为真
// 所以执行for{}内代码块内容,然后i变量加1 , i此刻为1 ,在反复执行二三部分
// 当 i = 10 的时候 ,第二部分执行 10 是否小于 10,结果为假,所以退出循环在继续执行for后的代码

// 对于循环,我们可以理解成 执行了规定次数的判断(分支)语句
}
#include<stdio.h>
int main(){
// while 循环
// 作为 第二种循环,我们先来了解while循环的格式
    int i = 0;
    while(i<10){
    printf("这是第%d次输出\n",i);
    i++;
    }
// 这段代码也是会输出10次语句,并且也是从0到9, 让我们来拆解循环结构
// 可以把while循环分解为三部分,while外 while括号内 while内
// 第一部分 与for循环的定义开始条件一样
// 第二部分 也是一样的
// 第三部分 还是一样
// 所以,聪明的小伙伴就发现了,for和while几乎是一样的,只不过是写法的不同。
// 所以for循环和while循环是可以互相改变成对方的格式
}
#include<stdio.h>
int main(){
// do while 循环
// 作为 第三种循环,也是while循环的变种,我们先来了解do while循环的格式
    int i = 0;
    do{
    printf("这是第%d次输出\n",i);
    i++;
    }while(i<1);

// 这段代码也是会输出1次语句,我知道你们在疑惑,i一开始是0,又经过了i++ ,i变成1了,不满足条件怎么输出
// 这是因为do while循环的特性,无论如何都会先执行一次代码块的内容,在进行判断条件,所以会出现不满足情况但是输出一次的情况
// 相较于前两种循环,do while循环并不常用
}

人为结束循环

在上面我们了解到了三种循环结构,我们发现循环次数是固定的,那假设我要中途退出,或者我某次不想循环该怎么办

这个时候就要引出两个关键字(保留字) break 和 continue

对于break来说,功能就是退出循环并且不在进入,而continue是退出本次循环,下次循环在进入。可能会有些许拗口,让我们用代码来说明

#include<stdio.h>
int main(){
    for(int i = 0;i<10;i++){
    if(i==6)
        break;
    printf("这是第%d次输出\n",i);
    }
}

上面这段代码会循环几次呢?

答案是6次,因为在 i 等于 6的时候执行了break语句,退出了循环,所以只执行6次

同理,你可以定义自己想定义的条件来让他退出循环,那如果我只想退出本次循环,就是 i 等于 6的时候我退出,但是 i 等于 7的时候我想继续进入循环怎么办,

使用 continue就可以解决

#include<stdio.h>
int main(){
    for(int i = 0;i<10;i++){
    if(i==6)
        continue;
    printf("这是第%d次输出\n",i);
    }
}

上面这段代码会输出9次,但是会少一句 “这是第6次输出” 这句话,这就是continue语句的作用

或许文字的感觉很苍白,所以我更推荐实际操作,而循环嵌套内容,我希望你们可以自行发掘掌握,编程的魅力就在于此。

至此第四章循环结束。