1

很抱歉没有添加整个代码。我的愚蠢错误。

  #include <stdio.h>
int main(int argc, char ** argv) {
    float celcius, fahrenheit, kelvin, interval;
    int c, f, k;
    char temp;

    printf("which temperature is being input? (C,F,K) ");
    scanf("%s", &temp);

    if(temp == 'c') {
        printf("enter a starting temperature");
        scanf("%f", &celcius);
        fahrenheit=celcius*9/5+32;
        kelvin=celcius+273.2;
        printf("%f, %f, %f", celcius, fahrenheit, kelvin);
        }

        else if(temp == 'f') {
        printf("Please enter a starting temperature");
        scanf("%f", &fahrenheit);
        celcius=fahrenheit-32*5/9;
        kelvin=fahrenheit-32*5/9+273.2;
        printf("%f, %f, %f", celcius, fahrenheit, kelvin);
           }

           else if(temp == 'k') {
            printf("enter a starting temperature");
                scanf("%f", &kelvin);
                fahrenheit=kelvin-273*1.8+32;
                celcius=kelvin-273.2;
                printf("%f, %f, %f", celcius, fahrenheit, kelvin);
            }
}

所以它询问输入的温度和起始温度,但为什么不计算数学方程?

4

4 回答 4

4

它正在计算数学方程式

fahrenheit=celcius*9/5+32;
kelvin=celcius+273.15;   

但你没有打印它。
尝试这个

printf("%f, %f, %f", celcius, fahrenheit, kelvin);  

并且不要忘记更改scanf("%s", &temp);

scanf(" %c", &temp);  
temp = tolower(temp); // include <ctype.h> header  

或更好地放置

int c;
while ((c = getchar()) != `\n` && c != EOF);

之后scanf(" %c", &temp);。这将吃掉除输入的第一个字符之外的所有字符。

根据OP的评论;

我怎样才能使温度名称出现在温度之上?

printf("celcius \tfahrenheit \tkelvin);  
printf("%5f\t%5f\t%5f", celcius, fahrenheit, kelvin);
于 2013-10-15T23:08:37.130 回答
1

Looks like it is calculating, but you're printing the wrong variables. Try replacing c, f, and k with celsius, fahrenheit, and kelvin in the print statement.

于 2013-10-15T23:10:15.640 回答
1

You have to be consistent in your variable names, you can't mix them up like you are.

Because you are calculating it like so:

fahrenheit=celcius*9/5+32;
kelvin=celcius+273.15;   

However this line is not printing it out, since you have the wrong variables:

printf("%f, %f, %f", c, f, k);

Change that to the proper variable name and type like so:

printf("%f, %f, %f", celcius, fahrenheit, kelvin); 
于 2013-10-15T23:10:28.150 回答
1

您没有展示如何定义变量temp,但是以这种方式读取字符串是非常危险的。如果temp是一个字符,则指向它的地址并将其视为字符串是自找麻烦。当然,您会在'\0'之后立即写入该位置temp,如果用户输入多个字符,他们可能造成的损害甚至更大。

您可以通过调用读取单个字符getc

temp = getc(stdin);

我建议您确保它是小写的 - 因为您正在比较c

temp = lower(getc(stdin));

那么很明显,当你打印出一个变量时,你必须打印出你计算的那个。您计算celcius等-但您的打印语句是

printf("%f, %f, %f", c, f, k);

c, f, 和k可能是有效变量 - 但它们不是您在之前的行中计算的变量。将打印语句替换为

printf("Celsius: %.1f; Fahrenheit: %.1f; Kelvin: %.1f\n", celcius, fahrenheit, kelvin);

或者,如果您想要数字上方的名称:

printf("\tC\tF\tK\n\t%6.1f\t%6.1f\t%6.1f\n", celcius, fahrenheit, kelvin);

请注意使用\t-tab字符 - 使事物(大约)对齐,格式说明符%4.1f表示“字段宽度为 6 的数字,小数点后有一个有效数字”。

还有一个注意事项 - 它是Celsius,不是celcius。但这是你的问题中最少的。

于 2013-10-15T23:09:15.590 回答