zhaopengfei 发表于 2014-2-16 22:08:00

第三章的最后两个考题


这两道题怎么解决的?尤其是第20题,明明输出格式是%3o,结果应该是只有三位的呀,而且我试过了,不论是%2o还是%4o,结果都是一样的4630,谁能给解释下为什么不?

凉石 发表于 2014-2-17 00:10:28

那个是宽度..就是给定多宽,然后靠右放,负号就是靠左,你可以试试%10o。小数点后的数才是输出多少位。比如,%10.3o

凉石 发表于 2014-2-17 00:24:30

第一题是。。。scanf(),%2d也是指宽度,但是输入的时候是达到最大宽度的时候就停止读入了。然后%2d%f是连着的,所有6就被读为b了,然后就这种情况是遇到空白字符的时候停止,543就没用了....而printf()是不够宽度的时候会自动添加宽度,因为scanf才是输入,输入之后实际就存在了,printf只是把它显示出来。

zhaopengfei 发表于 2014-2-17 08:58:43

凉石 发表于 2014-2-17 00:10 static/image/common/back.gif
那个是宽度..就是给定多宽,然后靠右放,负号就是靠左,你可以试试%10o。小数点后的数才是输出多少位。比如 ...

那个和%no是没关系的,我试过了,不管n是多少,就算是%10o最后的结果都是一样的4630,根本不起任何作用,不知道怎么回事。

凉石 发表于 2014-2-17 10:02:30

zhaopengfei 发表于 2014-2-17 08:58 static/image/common/back.gif
那个和%no是没关系的,我试过了,不管n是多少,就算是%10o最后的结果都是一样的4630,根本不起任何作用, ...

如果我做得到你吃了它...你自己检查一下吧,这很简单的问题。%10o当然是输出4630,只是左边会空6格

zhaopengfei 发表于 2014-2-17 10:25:28

凉石 发表于 2014-2-17 10:02 static/image/common/back.gif
如果我做得到你吃了它...你自己检查一下吧,这很简单的问题。%10o当然是输出4630,只是左边会空6格

好吧,你对了,感谢

zhaopengfei 发表于 2014-2-17 10:30:30

zhaopengfei 发表于 2014-2-17 10:25 static/image/common/back.gif
好吧,你对了,感谢

是不是这样的 %m.n 是指输出的总共有m位,小数点后有n位(靠右),但是我输入的m<n时仍然可以输出,这怎么解释呢。比如%8.12f 等等。

堕落天使D 发表于 2014-2-17 22:27:35

zhaopengfei 发表于 2014-2-17 10:30 static/image/common/back.gif
是不是这样的 %m.n 是指输出的总共有m位,小数点后有n位(靠右),但是我输入的m

当你输出的数位数小于等于m时,输出照常,只有当大于等于m时输出的宽度不够,才会在前面补足宽度。前面那位仁兄回答得很正确。
页: [1]
查看完整版本: 第三章的最后两个考题