求c语言大神。。。
答案:5 悬赏:10 手机版
解决时间 2021-03-03 06:18
- 提问者网友:骨子里的高雅
- 2021-03-02 10:43
求c语言大神。。。
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-03-02 11:15
因为%2x读取两位;前面%3d虽说读三位因为26a23中a十进制无法读取;所以a=26;而b为16进制读两位b=a2;转十进制b=10*16+2=162
全部回答
- 1楼网友:想偏头吻你
- 2021-03-02 13:55
2*16+3=35
b的十进制值是35
b的十进制值是35
- 2楼网友:想偏头吻你
- 2021-03-02 12:59
这种写法是错误的,scanf输入是无法控制宽度或精度的。
如果你改成scanf("%d %x",&a,&b),这种写法才是正确的,输入26 23后,中间的空格起到分隔作用,执行后a值为十进制26,b值为十进制35。
在使用scanf的时候,应该把%d %x看成一个整体。
因为%d控制十进制输入,输入26,自然输出26,而b值%x控制十六进制输入,十六进制的23是十进制的35。
还有,不是答案的问题,那种写法是错误的,答案没意义。我可以告诉你,你输入26a24,结果还是一样的。
如果你改成scanf("%d %x",&a,&b),这种写法才是正确的,输入26 23后,中间的空格起到分隔作用,执行后a值为十进制26,b值为十进制35。
在使用scanf的时候,应该把%d %x看成一个整体。
因为%d控制十进制输入,输入26,自然输出26,而b值%x控制十六进制输入,十六进制的23是十进制的35。
还有,不是答案的问题,那种写法是错误的,答案没意义。我可以告诉你,你输入26a24,结果还是一样的。
- 3楼网友:底特律间谍
- 2021-03-02 12:12
过程是:%3d遇到26a时因十进制没有a,则认为前面输入结束,所以a只接收26;向后由%2x接收16进制2位数字a2,把最后的3留在输入缓冲区中。所以最后b得到16进制数a2。16进制a2就是10进制162。
- 4楼网友:像个废品
- 2021-03-02 12:02
楼上的回答有点扯了,这里的“%3d”不是精度或宽度的问题,3和后面的2是指截取的字符位数。
之所以最后结果“a=26,b=162”是因为由于读a的时候用的是%d,也就是说规定的是10进制,因此在“26a23”中的a对其来说是非法输入(这里楼主可以进一步学习一下scanf结束接受的条件),所以就算取3位也只能得到26。
于是之后为什么b=162也很好理解了,因为取的是两位16进制数,所以得到的a2转成10进制为162,楼上说输入“26a24”是162原理也是一样的。
希望回答能让楼主满意。
之所以最后结果“a=26,b=162”是因为由于读a的时候用的是%d,也就是说规定的是10进制,因此在“26a23”中的a对其来说是非法输入(这里楼主可以进一步学习一下scanf结束接受的条件),所以就算取3位也只能得到26。
于是之后为什么b=162也很好理解了,因为取的是两位16进制数,所以得到的a2转成10进制为162,楼上说输入“26a24”是162原理也是一样的。
希望回答能让楼主满意。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯