C语言的,这个程序当中为啥会有两个scanf函数语句,这两个scanf函数语句有啥区别?

 我来答
White_MouseYBZ
2019-08-01 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6567万
展开全部
第一个是在do~while中保证输入的数是大于0的或是等于-1的,否则一直循环要求输入正确的数。第二个在while循环中,只要输入的数不是-1就一直循环要求输入。从输入数据的本质讲这两个scanf没有什么区别,都是输入一个整数,只是对输入数据的范围要求不一,写两个是便于代码对输入数据范围的处理。
更多追问追答
追问
如果说输入24、18的话,那由第一个赋值语句可知,max=24,x也等于24,执行while语句当中的if语句可知为假(因为x、max都为24),所以max输出24,而输入18的话,由第一个赋值语句可知max、x都为18,while语句的if语句依然不会执行,则输出max=18,我这是那出问题了吗?
输出的应该是24啊
风若远去何人留
2019-08-01 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部
第一个循环是找到第一个正数,赋值为max
然第二个循环遍历所有数
其实代码是有问题的,按照题目要求,输入-1代表结束
这个代码如果输入全是负数,那么需要两个-1才能结束程序
其实保留第二个循环,删掉第一个,并把max初始化为-1,这样更好一些
追问
代码没有问题吧,题干上说的是输入正整数
追答
如果限定输入必然有正整数,那么第一个循环的退出条件-1就是多余的,因为-1是最后一个,在之前必然有正数导致第一个循环退出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式