C语言:分支和循环_while和do_while

1、while循环

C语言提供了3种循环语句,while就是其中一种,接下来就介绍一下while语句。

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

1.1、if 和 while的对比
1 if(表达式)
2    语句;
3
4
5 while(表达式)
6    语句; //如果循环体想包含更多的语句,可以加上大括号

你可以来对比看一下,具体写个代码吧

//代码1
#include <stdio.h>

int main()
{
    if(1)
        printf("hehe\n");  //if后面条件满足,打印一次hehe
    return 0;
}
//代码2
#include <stdio.h>

int main()
{
    while(1)
        printf("hehe\n"); //while后面的条件满足,死循环的打印hehe
    return 0;
}

这就是它们的区别,while语句是可以实现循环效果的。

1.2、while语句的执行流程

 while语句的执行流程图

 首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。

1.3、while循环的实践

练习:在屏幕上打印1~10的值

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


1.4、练习

输入一个正的整数,逆序打印这个整数的每一位

例如:

输入:1234,输入:4 3 2 1

输入:521,输入:1 2 5

题目解析:

  1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%得到4
  2. 要想去掉n的最低位,找出倒数第二位,则使用n=n/10操作就可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
  3. 循环1和2两个步骤,在n变成0之前,就能得到所有的位。

参考代码:

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d",&n);
    while(n)
    {
        printf("%d", n%10);
        n /= 10;
    }
    return 0;
}

 2、do while循环

2.1、语法形式

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

1 do
2    语句;
3 while(表达式);

while for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;

do while循环则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进入下一次,表达式为假,则不再继续循环。

2.2、do while循环的执行流程 

do while循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的结果!= 0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。

所以在do while语句中循环体是至少执行一次的,这是do while循环比较特殊的地方。

 2.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;
}

2.4、练习

        输入一个正整数,计算其位数

例如:

输入:1234   输出:4

输入:12    输出:2

参考代码:

#include <stdio.h>

int main()
{
    int n = 0;
    int cnt = 0; //计算位数
    scanf("%d", &n);
    do
    {
        cnt = cnt + 1;
        n = n / 10; 
    } while (n);
    printf("%d\n", cnt);
    return 0;
}

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值