0

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

像这样:

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;
}
4

1 回答 1

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。因此,您正在尝试打印不存在的温度。

于 2013-09-23T23:05:06.060 回答