c语言之循环结构

本文详细介绍了编程中的三种循环结构:while、for和do...while,包括它们的基本语法和在实现保底抽奖机制中的应用。同时讨论了break和continue关键字在控制循环流程中的作用。
摘要由CSDN通过智能技术生成

在之前的文章中,我们介绍了分支结构,但是在许多问题中,仅仅有顺序与分支结构是不行的,还有一种就是循环结构。

循环结构又分为三个小的结构,while循环,for循环以及do...while循环。

循环结构都有三个基础部分:初始化部分,判断部分,调整部分。

我们还是以游戏抽奖的问题来介绍循环结构,在游戏中,我身为一名非酋,运气十分不好,经常抽不到好东西,这个时候就有一个保底机制,当抽取到达一定的次数,就能百分百获得一些好东西,今天我们就用循环来实现一个简单的保底机制。

while

基本语法结构

while (判断表达式)
{
    循环语句;
}

 在想要进入循环时,会先进行判断,如果判断表达式为真,就执行循环语句,循环语句结束后会回到判断语句,重新判断,循环往复,直到最后不满足循环条件,退出循环。

while循环的初始化部分其实在while循环外,判断表达式往往是与某个变量相关,所以通常需要在while循环外就将变量进行初始化,判断部分就是while循环的判断条件,调整部分被包含在循环语句内。

假设保底是80抽必定出一个好东西,而我已经抽了60抽,还是没有好东西,那我们只需要再抽20次就行,用while来实现我们剩下20抽。

    int a = 60;
    //初始化部分
    while (a < 80)
        //判断部分
    {
        a++;
        //调整部分,每次循环就使记录次数加一
        if (a < 80)
            printf("未抽到\n");
        else if (a == 80)
            printf("恭喜你,成功抽到\n");
    }

 可以看到,这个厂商十分坑人,只有在最后一抽才能抽到好东西。

因为在开始抽奖的那一刻抽奖就被记录,所以a++放在前面。

for

基本语法结构

for (表达式1; 表达式2; 表达式3)
{
    循环语句;
}

 通过流程图看,for与while是很像的,for循环比起while循环的优点是for循环将三个基础部分集中在一起了。

在基础语法中表达式1是初始化部分,表达式2式判断部分,表达式3是调整部分,这样可以方便我们调整各各部分的内容,在while循环中,如果我们的代码写的十分复杂,可能导致后期修改的时候不好修改,而for循环就可以避免这些。

但是for与while不同的是,for循环的调整一定是在循环语句后执行的,这会导致一些与while不同的地方。

我们用for循环来实现这个保底机制应该是:

    int a = 60;
    for (a = 61; a <= 80; a++) 
    // 循环将执行20次,当a从61到80
    { 
        if (a < 80)
            printf("未抽到\n");
        else if (a == 80)
            printf("恭喜你,成功抽到\n");
    }

因为我们执行循环时已将相当于开始抽奖了,所以在初始化时我们将抽奖的次数设置为61。

for循环还有一些特殊的地方

1.变量的定义可以在初始化部分进行,就比如上面代码中

int a = 60;
for (a = 61; a <= 80; a++)

我们可以将两句代码合并在一起:

for (int a = 61; a <= 80; a++)

2.for循环的三个部分都是可以取消的

for ( ; ; )

没错,这样写是没有语法错误的,这样写的问题是缺少判断条件,因为初始化以及调整我们可以在for的外面和循环语句内完成,但是缺少判断条件没办法在别的地方完成,这会导致死循环。

do...while...

基本语法结构

do
{
    循环语句;
} while(判断条件);

do...while..循环的特点是无论如何,都会执行一次循环,它是先执行一次循环语句,再执行判断表达式,它的初始化部分也是在循环外,判断部分是while后面,调整部分在循环语句中。

 因为它的特殊形式,所以它的运用场景也是最少的。

break

有些时候,我们可能会想要提前终止循环,就比如我抽到一半不想抽了,觉得今天运气不好,改天再抽,这个时候想要提前跳出循环,就要用到break。

break的作用就是永久终止循环,无论在哪个循环中,一旦遇到break,都会直接终止循环。

continue

continue的作用是终止本次循环continue后面的语句,但是在while语句跟for语句可能会不一样。

比如我们需要在屏幕上打印1到10的数字,但是不要5,我们可以创造一个循环产生1到10的数字,在循环变量为5的时候用continue跳过循环,我们分别用while和for来实现这个功能。

while

int i = 1;
while (i <= 10)
{
    if (i == 5)
        continue;
    printf("%d", i);
    i++;
}

for

for (int i = 1; i <= 10; i++)
{
    if (i == 5)
        continue;
    printf("%d", i);
}

当我们运行程序的时候,会发现while循环的结果会是死循环,而for循环会按我们的想法打印数字。

这是为什么,在while循环中,当我们使用continue时,会跳过后面的i++,导致在在下一次循环开始时i的值依旧是5,导致死循环,而在for循环中,虽然跳过了后面的语句,但是依旧会执行for语句后面的调整部分,是i的值变化。

在do...while...循环中continue于while是一样的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值