学习使用scanf时的一些思考【scanf函数与其返回值】

今天在做一道计算n的阶乘的题时,使用scanf语句读取输入的数据n时出现了一些问题,导致n恒赋值为1,下面是我这次学习的过程和对这次学习的思考与心得。

下图是我刚开始做题时的写的代码

 不论输入多少,返回值始终是1

 后来查阅了一下scanf语句的用法,终于发现了问题所在

 一开始我直接用用n接收了scanf语句的返回值,以为其返回值就是所输入的数值。

但其实scanf返回值的定义是这样的:

返回值scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF

也就是说,scanf返回的是成功读入的项数,此时只有一个%d成功读取,故其返回值为1,然后将1赋给了前面的n,继而导致在后面的for循环中a<=n的条件只满足一次。随后multi被赋值为1,循环直接跳出,最后导致打印的结果恒为1。

所以形如n = scanf(“%d”,&n)这样的代码,在此时实在是多此一举。

 其实要想把输入的数值赋给n,直接如图调用scanf语句即可实现,而不需要再去接收其返回值。

这样就能顺利的解决这道阶乘的求算题。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值