2014-03-13 24 views
-2

的双号什么是在C语言打印双(printf的),使得简单的解决方案:漂亮打印在一个固定数目的字符

  1. 恰好被用于N个字符(将围绕6),用于所有的双数(nan和infinities分开处理),正面和负面都一样(+或 - 总是作为第一个字符);

  2. 只要数字字符不全为0(即数字太小)或小数点是N个字符的最后一个(即太大的数字),就使用十进制表示('。'总是存在)。否则切换到科学表示,始终占用N个字符。

我能想到的似乎相当复杂的所有解决方案,任何想法容易获得这样的结果(效率是不是一个问题在这里)?

谢谢!

+0

为什么投降? – stepelu

+1

我们不在这里为你开发算法。你所提供的基本上是一项家庭作业的任务,带着“为我做这件事”从你身上隐藏。 –

+1

显示您尝试过的内容,为什么它不正确,以及您需要更多信息。 http://www.cplusplus.com/reference/cstdio/printf/将是一个开始。 – clcto

回答

0

我找不到通过单个printf调用来完成此操作的方法,这里是我的解决方案。

至少9个字符必须用作(前面加+),即科学记数法的最小字符数(例如:+ 1.0E-002)。在下面我考虑9个字符的情况。以下两个格式用于基于所报告的下面的条件:

科学格式“%+ 1E”:

  • 字符4至9按照十进制格式是0和数量是不相同0(即小数点过小)

  • '。'炭是不是char 3和炭8按十进制格式之间存在(即,对于小数太大)

十进制格式 '%+ 6F':

  • 无限或NaN

  • 所有其他情况下

这很容易通过改变一个const,以适应比表示9个字符长上面的蚂蚁。