scanf函数实现多组输入

本文介绍如何利用scanf函数的返回值特性实现多组输入的循环处理,并通过实例代码演示如何判断两个整数的大小。

    昨天复习到scanf函数的时候发现了自己对它的了解只停留在了用它实现接收输入这里,没有留意到其实scanf函数它本身存在一个返回值其类型是int,这让我有点惊喜,既然它存在返回值,那么我们就可以用它的返回值进行判断,能进行判断的话,自然就可以做为循环语句中的判断条件。用scanf函数作为判断语句我也是第一次使用,我就去尝试使用,看看scanf函数作为判断条件的时候到底是如何进行循环的。(后面了解到这其实是经典的多组输入的实现)

      在这之前,我先来说说scanf函数作为判断语句中所需要知道的知识点。scanf返回值为int,每读取到一个数据,返回值就加一(初始值为一)。利用这个特性用while语句可实现多组输入。若读取失败scanf返回值就位EOF,其中EOF值为-1。

int main() {                  //多组输入,判断俩数大小,并输出大小关系
    int a, b;
    while (scanf("%d %d", &a, &b) == 2) {
        if (a == b) { 
            printf("%d=%d\n", a, b);
        }
        else if (a > b) {
            printf("%d>%d\n", a, b);
        }
        else {
            printf("%d<%d\n", a, b);
        }
    }
    return 0;
}

需要注意的是这时候的while语句的正确执行过程:

运行结果:

上面这串代码的执行过程是这样的,执行到while语句的时候,如果你在键盘上只输入一个数据的时候,这时候你Enter,程序是不会进入循环的。如图

但是系统会保存这个数据。如果你接下来继续输入数据,这个新输入的数据将会跟1比较:

同理如果你一开始就输入三个数据,系统会先读取到前面俩位数据,进行判断。剩下的数据会被保存起来与下一个输入的数据进行比较。

这就是这个代码的运行的底层逻辑。

总的来说,这篇文章是有感而发。如果有哪里表达不清楚,或者我哪里理解错误,理解的不是很到位的地方,欢迎在评论区指出或者私信我。希望我的文章能够帮助到你。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值