C语言基础要素(017):退出条件循环:do-while

入口条件循环是在执行循环体语句之前先检测条件,循环语句有可能一次也不执行。而退出条件循环,它的判断条件则在执行循环体之后进行检查,这表示循环体中的语句至少被执行一次。

do-while循环

do-while循环属于退出条件循环,语法形式如下:

do
    语句
while (表达式);

程序先执行循环体中的语句部分,然后再求值表达式,如果表达式的值为真,则再次执行语句,以此类推。当表达的式的值变为假,则循环终止。

#include <stdio.h>

int main()
{
    do
    {
        printf("run once.\n");
    }
    while (0);

    return 0;
}

在这里插入图片描述

选择哪种循环

在三种循环语句里,编程时应该选用哪一种呢?如果语句在执行之前,需要一个先决的判断,显然入口条件循环while与for都可以。对于需要执行一次再判断的情况,do-while是较好的选择,这会使代码更加简洁。下面的程序,需要在输入密码后才决定用户行为,正是属于这种情形。

#include <stdio.h>

int main()
{
    int magic_num = 79;
    int input_num;

    do
    {
        printf("请输入你的魔法数字: ");
        scanf("%d", &input_num);
    }
    while (input_num != magic_num);

    printf("欢迎来到魔法学样!\n");

    return 0;
}

在这里插入图片描述

程序先输出提示语句,等待你输入数字并按下回车键,当读取的数值与内部预设值不匹配时,就会重复这一过程,直至匹配。

使用scanf函数

函数scanf用于从标准输入设备(通常是键盘)读取数据到变量中。

int num1, num2;
scanf("%d%d", &num1, &num2);

第一个参数是格式化字符串,之后是各个变量的名称加前缀&字符,否则变量将无法获得正确的输入。输入值之间通常以空白字符分隔,多个连续空白会被认为是一个分隔符。格式符%d表示读取整型数据,这里读取2个整数,就需要键入 12 3412 34,而不是1234。如果指定了除空白外的分隔符,则键入的文本要与格式化字符串相匹配,否则变量将无法获得正确的输入。

scanf("%d,%d", &num1, &num2);

此时就需要输入12,34,数值间的空白不会影响正确性,所以12, 34也是正确的输入;而12 34会导致变量num2未能设置正确值。

scanf("%d # %d", &num1, &num2);

而,此时需要输入12 # 34

悄悄说一句,不要再在这个细节上面浪费时间了。

练习

  1. 使用do-while输出1-10。
  2. 使用scanf读取一个字符、再读取一个浮点数,并打印出来。
  3. 使用入口条件循环改写最后的示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值