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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
内容: 1、mysql——原始 文件: 博客网址:https://blog.csdn.net/weixin_42167759/article/details/80848259 存在的问题: 1、新增用户时候id ,删除后再增加会出错,id有冲突; 2、删除用户时候,若该用户创建过其他用户(不能改此用户名、不能改此用户角色,不能删除此用户); 3、(下一步加入)增加时候,若改用户名存在(给出用户存在的提示信息); 2、db_修改过(用户 角色 权限) 文件: 博客网址:https://blog.csdn.net/weixin_42167759/article/details/80848780 修改的问题: 1、新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错; 2、删除用户时候,若该用户创建过其他用户(不能改此用户名、不能改此用户角色,不能删除此用户); 3、(下一步加入)增加时候,若改用户名存在(给出用户存在的提示信息); 4、修改了用户的表字段信息,新增了认证方式的字段; 5、用户有三种认证方式,当选择口令认证的时候,syn_sn_有输入信息,当选择KEY认证的时候,dyn_pass_sn_字段有输入信息 3、userGroupUser_intfac 文件: 博客的网址:https://blog.csdn.net/weixin_42167759/article/details/80848991 整理的文档: 《Mysql 最后程序的总结—— Linux系统C语言编程连接MySql数据库实现的用户角色权限管理系统》 修改的问题: 1、新增 添加用户组模块; 2、新增 显示用户组模块; 3、修改 新增用户模块 选择 其所属用户组 并把用户id与用户组id 写入用户用户组关系表; 4、新增 修改用户以及删除用户组模块(有用户属于该用户组 用户组名字不允许更改 用户组不允许删除); 5、新增 增加用户、用户组时候,若要增加的用户名已存在(给出用户存在的提示信息); 6、修改了 显示的界面问题; 7、修改部分switch case 输入为字符; 8、修改部分 操作完成后 有两次回车 确认的问题; 遗留的问题: 1、switch case 输入为字符,应该改为case a:bresk; case b:break;…… 否则输入的1与10是一样的执行结果; 字符中只有数字0-9; 2、在remark字段中 scanf()函数是不允许输入空格的。 __________________________________________________________________________________________________ 4、user-role-authoritys-usergroup文件: 数据库的图。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值