如何在C中垂直打印?

我必须在一个循环中打印我想要以两行打印输出,而不是在一行上混合。

像这样:

printf("| %-7.2f ", Fahrenheit); 

产生:

 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | 

当我添加printf("| %-6d", Celsius); 在上面的printf下面,它打印在我的第一个printf的中间/中间。

我希望输出如下:

 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | | -300 | -275 | -250 | -225 | -200 | -175 | -150 | -125| 

而不是将两组值混合在同一条线上。

我的代码的一部分:

 for(Celsius = CelsiusMin;Celsius <= CelsiusMax; Celsius += CelsiusStep) { Fahrenheit = FahrenheitZero + Celsius * CelsiusToFahrenheit; printf("| %-7.2f ", Fahrenheit); printf("| %-6d", Celsius); } return EXIT_SUCCESS; } 

你不能直接有一个printf()语句序列写入第1行,第二个并发序列的printf()语句写入第2行,所以你将不得不伪造它。

您可能需要构建两行输出的东西,然后在它们准备好后打印它们:

 char line1[128]; char line2[128]; char *next1 = line1; char *next2 = line2; for (int c = -325; c <= -125; c += 25) { double f = (c + 40.0) * (9.0 / 5.0) - 40.0; next1 += sprintf(next1, "| %-7.2f ", f); next2 += sprintf(next2, "| %-7d ", c); } printf("%s|\n", line1); printf("%s|\n", line2); 

样本输出:

 | -553.00 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | -238.00 | -193.00 | | -325 | -300 | -275 | -250 | -225 | -200 | -175 | -150 | -125 | 

转换公式比您所看到的通常更简单,并且对称将°F转换为°C或反之亦然,差异是转换因子(9.0 / 5.0)(5.0 / 9.0) 。 它依赖于-40°C = -40°F。 试试吧:

  • C = 0°C; (C+40) = 40; (C+40)*9 = 360; (C+40)*9/5 = 72; (C+40)*9/5-40 = 32°F C = 0°C; (C+40) = 40; (C+40)*9 = 360; (C+40)*9/5 = 72; (C+40)*9/5-40 = 32°F
  • F = 32°F; (F+40) = 72; (F+40)*5 = 360; (F+40)*5/9 = 40; (F+40)*5/9-40 = 0°C F = 32°F; (F+40) = 72; (F+40)*5 = 360; (F+40)*5/9 = 40; (F+40)*5/9-40 = 0°C

你可以用摄氏度作为double打印来做得更好; 我保留了您选择的整数表示,但确保数字在两行上排成一行。

仅供参考:绝对零度为-273.15°C,0K,-459.57°F。 所以你试图打印不存在的温度。

您可以使用“\ t”来对齐输出。