无法创建天气转换程序

时间:2013-09-24 03:21:03

标签: objective-c

几周前我开始上学计算机编程,我们刚开始使用Objective-C!我们需要将Celsius转换为Fahrenheit和Kelvin。要做到这一点,我必须输入摄氏量。然后我用这个等式得到华氏温度:* 9/5 + 32.为了得到开尔文,我加了273.15。

#include <stdio.h>
int main(void)
{
    float Celsius;
    float Farenheight = Celsius * 9 / 5 + 32;
    float Kelvin = Celsius + 273.15;

    printf("How many degrees in Celsius?");
    scanf("%s %s %d", Celsius, Farenheight, Kelvin);
    printf("C: %s, F: %s, K: %d", Celsius, Farenheight, Kelvin);

}

这是我到目前为止提出的(第二次修订),但我真的不确定如何做到这一点。如果有人能帮助我那会很棒!

2 个答案:

答案 0 :(得分:3)

有趣的是,温度转换今天早些时候出现在another context

将该代码调整为大纲,您需要在将任何内容转换为celsiuskelvin之前阅读fahrenheit中的值(而您的代码会转换未初始化的值,而不是一个好主意):

double celsius;
printf("What is the temperature in degrees Celsius? ");
if (scanf("%lf", &celsius) == 1)
{
    double kelvin = celsius + 273.15;
    double fahrenheit = (celsius + 40.0) * (9.0 / 5.0) - 40.0;
    printf("%7.2f °C = %7.2f K = %7.2f °F\n", celsius, kelvin, fahrenheit);
}

请注意,在使用结果之前会检查输入的有效性。

转换公式比您所看到的通常更简单,并且对称将°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

绝对零度为-273.15°C,0K,-459.67°F。

答案 1 :(得分:0)

使用此代码段从stdin读取输入:

#include <stdio.h>
int main (int argc, char *argv[]) {
    int celsius;
    printf("What is the temperature in celsius? ");
    scanf("%d", &celsius);
    printf("celsius degree = %d\n", celsius);
}