基本C编程..将摄氏度转换为开尔文时的逻辑错误

时间:2015-07-08 13:19:11

标签: c

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int celsius = 0, kelvin = 0;
    float farenheit;

    printf("Enter the Boiling of water in Celcius \n");
    scanf("%d", &celsius);
    kelvin = 273 + celsius;
    farenheit = celsius * (9 / 5) + 32;
    printf("The Boiling point of water in Kelvin is %d \n and in farenheit is %f \n \n", kelvin, farenheit);

    printf("Enter the Freezing point of water in Celcius \n");
    scanf("%d", &celsius);
    kelvin = 273 + celsius;
    farenheit = celsius * (9 / 5) + 32;
    printf("The freezing point of water in Kelvin is %d \n and in farenheit is %f \n \n", kelvin, farenheit);

    return 0;
}

在eclipse中,我键入了这段代码,我希望它能在控制台上问我“在摄氏度中输入水沸腾”并等到我输入100并再次为冰点做同样的事情。但是在我构建(ctrl + B)之后,它什么也没做。我必须输入一些数字(这里我做'100')然后按'输入'并再次输入一些数字(此处为'1')然后按'输入'。它向我显示了'100'摄氏度的计算结果。它甚至没有让我进入冰点。我键入'1'并按下回车键。 我的代码怎么了?

这是我的输出。

100
1
Enter the Boiling of water in Celcius
The Boiling point of water in Kelvin is 373 and in farenheit is 132.000000

Enter the Freezing point of water in Celcius
The freezing point of water in Kelvin is 274 and in farenheit is 33.000000

3 个答案:

答案 0 :(得分:1)

int celsius;
scanf("%d", &celsius);
int kelvin = 273 + celsius;
float farenheit = 1.8 * celsius + 32;    // To make it a float

<强>输入

100
0

<强>输出

212.000000 373
32.000000 273

请参阅http://ideone.com/6ikg23演示。

答案 1 :(得分:0)

9/5是一个整数除法。

整数除数会降低任何分数。

结果是1。

要解决此问题,请使用float而不是int

9.0f/5.0f

答案 2 :(得分:0)

首先,您提供的代码最后缺少一个括号,并且由于整数截断而无法计算正确的华氏温度转换;但是,第一个可以归结为复制粘贴错误,第二个是程序员(新老)的常见错误。

您编写代码并运行完全正常,在修复华氏度错误(提示:使用小数点,(9./5),以浮点计算它)后,它返回了我的输入的正确值。

不幸的是,我不熟悉Eclipse,所以我在那里帮不了多少。但这绝对是一个工具问题,而不是代码问题。