当前位置: 首页 > 知识库问答 >
问题:

这种printf格式可能吗(左对齐符号,零上没有符号)?

商池暝
2023-03-14

我正在尝试使用printf来获得以下编程输出:

- 20
- 15
- 10
-  5
   0
+  5
+ 10
+ 15
+ 20

关键规格是:

  • 字段宽度始终为4
  • 符号总是左对齐
  • 数字总是对齐的
  • 零没有符号

到目前为止,我还不能提出一个能够给出所需结果的printf语句。我最接近的是:

for(int i = -20; i <= 20; i+=5)
{
    printf("%-+4d \n", i);
}

它产生:

-20
-15
-10
-5
+0
+5
+10
+15
+20

有没有一种方法可以做到这一点,而不必做任何繁琐的字符串操作?

共有1个答案

司马英才
2023-03-14
printf("%c%3d\n", i>0 ? '+' : i<0 ? '-' : ' ', abs(i));

注意:对于int_min,上述操作失败,但这不应该是一个问题,因为您的值的大小只能小于1000。

 类似资料:
  • 问题内容: 我正在尝试像在此网页中那样使用printf语句在Java中进行格式化:单击此处。但是我只是不知道$符号的目的是什么。有人可以向我解释一下吗? 输入: 预期的输出:(应该有一个空格而不是_) 我的代码: 问题答案: 这是 参数索引 。您可以阅读文档。我将尝试为您解释教程中的字符串: 通常,格式为。 在我们的示例中,指向语句中的位置。我们有3个字符串格式化,因此为什么我们的格式化字符串有,

  • 问题内容: 我正在使用我给定的语言环境获取自定义货币格式。但是,这始终包含我不需要的货币符号,我只想要给定语言环境的正确货币数字格式而没有货币符号。 做一个抛出一个异常.. 问题答案: 以下作品。这有点丑陋,但可以履行合同: 您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重构新格式:

  • 在Java中,如何使用printf()对同一行的输出进行一致的左对齐和右对齐?这是所有left aligned的代码: 这是所有东西都保持对齐的输出: 相反,如果第三个元素(0.20,1.00,9.00)是正确的,那么我想要的是什么。我在上面的输出中指出“l”是左对齐的,但我希望变量在“r”所在的位置是右对齐的。如何使右边的输出(0.20,1.00,9.00)右对齐,同时使左边的输出(苹果,派,奶

  • 问题内容: 我正在处理一个包含坐标x,y,z的文本文件 每行使用 处理完数据后,我需要将坐标写回到另一个txt文件中,以便使每一列中的项目(以及输入文件)都正确对齐。每行由坐标组成 C ++中是否有任何类似操纵器的控件可以设置宽度和对齐方式? 问题答案: 使用更新的语法尝试这种方法: 以下是使用旧语法(对不支持的旧版Python有用)的方法:

  • 问题内容: 是否有可能格式化在显示一个 圆点 ? 如果是这样,我该怎么办? 问题答案: 也许对字符串中的项目符号字符使用Unicode代码点? 目标c 斯威夫特4

  • 说我想打印: 这是正确的。这: 或者这个: ? 事情是在其他地方,所以我遇到了这样的讨论: -即使ch变为无符号字符,代码的行为也不是由C标准定义的。这是因为无符号字符被提升为int(在普通的C实现中),所以int被传递给printf的说明符%u。但是,%u需要一个无符号int,所以类型不匹配,并且C标准没有定义该行为 -你的评论不正确。C11标准规定转换说明符必须与函数参数本身的类型相同,而不是