C语言学习(第十四天)

6.5 练习

练习1:
计算1~100之间3的倍数的数字之和

参考代码:

#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for(i=1; i<=100; i++)
    {
        if(i % 3 == 0)
            sum += i;
    }
    printf("%d\n", sum);
    return 0;
}
//小小的优化
//如果能直接产生3的倍数的数字就省去了多余的循环和判断
#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for(i=3; i<=100; i+=3)
    {
        sum += i;
    }
    printf("%d\n", sum);
    return 0;
}

7. do-while循环

7.1 语法形式
在循环语句中do while 语句的使用最少,它的语法如下:

do
语句;
while(表达式);

while 和for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳
出循环;
而 do while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表
达式为真,就会进行下一次,表达式为假,则不再继续循环。

7.2 do while循环的执行流程

 在do while 循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的
结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。
所以在do while 语句中循环体是至少执行一次的,这是do while 循环比较特殊的地方。

7.3 do while循环的实例
在屏幕上打印1~10的值

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

 一般do while 使用在循环体至少被执行一次的场景下,所以较少一些。

7.4 练习
输入一个正整数,计算这个整数是几位数?
例如:
输入:1234 输出:4
输入:12 输出:

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int cnt = 0;
    do
{
    cnt++;
    n = n / 10;
    } while (n);
    printf("%d\n", cnt);
    return 0;
}

这里并非必须使用 do while 语句,但是这个代码就比较适合使用 do while 循环,因为n即使是
0,也是1位数,要统计位数的。

8. break和continue语句
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break 和continue 两个关键字,就是应该到循环中的.

• break 的作用是用于永久的终止循环,只要break 被执行,直接就会跳出循环,继续往后执
行。
• continue 的作用是跳过本次循环continue 后边的代码,在for 循环和while 循环中有所
差异的。

8.1 while循环中的break和continue
8.1.1 break举例

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
        if(i == 5)
            break;//当i等于5后,就执行break,循环就终止了
        printf("%d ", i);
        i = i+1;
    }
    return 0;
}

执行的结果:

 打印了1,2,3,4后,当i等于5的时候,循环正break 的地方终止,不再打印,不再循环。
所以break 的作用就是永久的终止循环,只要break 被执行, break 外的第一层循环就终止了。
那以后我们在循环中,想在某种条件下终止循环,则可以使用 break 来完成我们想要的效果。

 8.1.2 continue举例
continue 是继续的意思,在循环中的作用就是跳过本次循环中continue 后边的代码,继续进行
下一次循环的判断。
上面的代码,如果把break 换成continue 会是什么结果呢?

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
        if(i == 5)
            continue;
        //当i等于5后,就执行continue,直接跳过continue的代码,去循环的判断的地方
        //因为这里跳过了i = i+1,所以i一直为5,程序陷入和死循环
        printf("%d ", i);
        i = i+1;
    }
    return 0;
}

到这里我们就能分析出来, continue 可以帮助我们跳过某一次循环continue 后边的代码,直接
到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue 后边的话,可能会造成
死循环。

8.2 for循环中的break和continue

8.2.1 break举例

其实和while 循环中的break 一样, for 循环中的break 也是用于终止循环的,不管循环还需
要循环多少次,只要执行到了break ,循环就彻底终止,我们上代码。

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

运行结果:

 break 的作用是永久的终止循环,未来我们在某个条件发生的时候,不想再继续循环的时候,就可以使用 break 来完成。

8.2.2 continue举例
上面的代码,如果把break 换成continue 会是什么结果呢?

#include <stdio.h>
int main()
{
    int i = 1;
    for(i=1; i<=10; i++)
    {
        if(i == 5)
            continue;//这里continue跳过了后边的打印,来到了i++的调整部分
        printf("%d ", i);
    }
    return 0;
}

 所以在for 循环中continue 的作用是跳过本次循环中continue 后的代码,直接去到循环的调
整部分。未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,就可以使用
continue 来实现。

在这里我们也可以对比一下while 循环和for 循环中continue 的区别:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顶配

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值