C语言中循环的用法

我们之前已经讲过了C语言中的三种结构的顺序结构和分支结构,今天我们再来介绍C语言中的循环结构。分别是while、for和do while三种循环。

首先while语句的语法结构和if语句非常相似。

  • while循环

  • if和while的对比

if(表达式)
    语句;

while(表达式)
    语句;
//使用if的代码
#include <stdio.h>
int main()
{
    if(1)
        printf("hehe\n");
    return 0;
}

//使用while循环的代码
#include <stdio.h>
int main()
{
    while(1);
        printf("hehe\n");
    return 0;
}

我们之前讲过,if()中的表达式成立,即为真。便会执行下面的语句,而上面代码中if(1)便是为真,执行下面的代码一次

而while()中也是一个表达式,和if同样的用法,而不同的是,if执行一次,而while会一直执行。而什么时候退出呢?首先是在条件不成立的情况下退出。

我们今天慢慢讲解。

我们先来一个例子:

在屏幕上打印1~100的值

#include <stdio.h>
int main()
{
    int i = 1;
    while(i <= 10)
    {
        printf("%d ",i);
        i = i + 1;
    }
    return 0;
}

如上面的代码所示,i = 1,while后的表达式是i<=10,成立是显而易见的,所以执行下面的语句,先输出1,然后将i+1的值赋给i,即自己给自己+1,这个时候要注意,我们要再回到while(i<=10)这里再次判断,这时候,i=2,2<=10成立继续执行,输出2,然后再给自己+1,以此类推……直到11<=10不成立退出循环。

最后的结果便是:

1 2 3 4 5 6 7 8 9 10

然后是今天的第二个内容,for循环,也是我们最常用的循环语句。

  • for循环

  • 语法形式

for(表达式1;表达式2;表达式3)

        语句;

表达式1:用于循环变量的初始化

表达式2:用于循环结束条件的判断

表达式3:用于循环变量的调整

在使用时,这三个表达式都是可以省略的,但是省略后,可能会出现我们无法预料到的结果,所以,最好不要省略。

我们用for循环来输出刚刚的1~10的值

#include <stdio.h>
int main()
{
    int i = 0;
    for(i = 1;i <= 10; i++)
    {
        printf("%d ",i);
    }
    return 0;
}

上面的代码中,一开始i=0,但是在for()的第一个表达式又重新赋值了i=1,所以这里用到了C语言的局部变量。

如果有需要,可以移步我们之前的内容。

https://mp.csdn.net/mp_blog/creation/editor/133976967

这时i=1,然后第二个表达式是循环语句是否可以结束的判断,i<=10,即1<=10成立,所以先去执行下面的语句,注意,先运行for的前两个表达式,第三个表达式是在for语句下面的语句当前执行结束后,再执行。然后输出1,最后i++对自己进行加+1,这里无论是++i还是i++都可以直接加1,因为这里就是一条语句。第二次循环就不再执行第一个表达式了,直接执行第二个表达式,判断是否符号运行的条件,2<=10成立,所以继续执行,输出2,然后i++,i变成3,以此类推……直到11<=10不成立退出循环。

最后结果为:

1 2 3 4 5 6 7 8 9 10

然后我们再来对for循环的执行顺序做个总结:

  • 进入for循环后,第一个表达式->第二个表达式->for下面的执行语句->第三个表达式->第二个表达式->for下面的执行语句->第三个表达式->第二个表达式……直到第二个表达式不成立。
  • 第一个表达式只执行一次,也就是刚进入for循环时执行的一次。
  • 第三个表达式只有在本次的执行语句运行结束后执行。

这时候,或许会有人问,while循环和for循环有什么区别呢?

我们可以来做个对比:

//while循环
#include <stdio.h>
int main()
{
    int i = 1;//1.初始化
    while(i <= 10)//2.判断
    {
        printf("%d ",i);
        i = i + 1;//3.调整
    }
    return 0;
}

//for循环
#include <stdio.h>
int main()
{
    int i = 0;
    for(i = 1;i <= 10; i++)//1.初始化;2.判断;3.调整
    {
        printf("%d ",i);
    }
    return 0;
}

如上所示,我们可以看到for循环和while循环在实现的过程中都有初始化、判断和调整这三个部分。但是for循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候,while循环的三个部分就比较分散,所以从形式上for循环更优一些。

就比如说,老师平时讲课时的重点,我们会把重点都集中在一个本子上,一般不会在这个本子上写些重点,在另一个本子上写些重点,当重点过多时,重点太过分散,别人都已经复习完了重点,我们才刚找到重点,这样不利于我们的保存和查找。

我们刚刚介绍的都是先判断是否可以运行,然后再运行的,我们现在再来说一个特例:

先执行,后判断的do while循环

  • do while循环

  • 语法形式

do

        语句;

while(表达式);

while和for都是先判断是否可以执行,然后再执行,可以执行就一个个的执行语句,如果不可以就跳出循环;而do while循环则是先执行所有的语句,然后再判断是否可以执行,如果可以执行再进行下一次的执行,不可以就跳出循环。

就比如说:我们小时候看到桌子上有好吃的,会先问一下可不可以吃,如果可以吃,多吃几个,直到爸妈说不能吃了;如果不可以吃,掉头就走。这便是while和for的执行理念。

而如果我们先吃一个,再问爸妈可不可以吃,如果可以吃,继续吃,直到说不能吃了;如果说不可以吃,掉头就走。这便是do while的执行理念。无论可不可以吃,也吃了一个。

最大的区别便是:do while循环无论是否符合运行条件都至少执行一次。而while和for只要不符合条件,就不能执行。

我们再用do while来打印刚刚的内容

#include <stdio.h>
int main()
{
    int i = 1;
    do
    {
        printf("%d ",i);
        i = i + 1;
    }while(i<=10);
    return 0;
}

如上所示:先对i初始化为1,然后进入do while开始循环。先输出1 ,然后对i自己进行+1,最后,判断i<=10,即2<=10,成立,则继续执行……以此类推,直到i=11时,11<=10不成立,退出循环。

一般do while使用在循环体至少一次的场景下,所以较少一些。我们用的更多的循环是for循环。

今天的内容就到这里就结束了,如果有什么疑问,可以在评论区留言或者私信。欢迎各位来指正错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值