我必须在一个循环中打印,我想用两行打印输出,而不是在一行上混合。
像这样:
printf("| %-7.2f ", Fahrenheit);
产生:
| -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 |
当我在上面的printf下添加printf("| %-6d", Celsius);
时,它会打印在我的第一个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;
}
答案 0 :(得分:2)
你不能直接有一个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
。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。所以你试图打印不存在的温度。
答案 1 :(得分:-1)
您可以使用“\ t”来对齐输出。