将温度从摄氏温度转换为华氏温度

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

标签: c if-statement scanf

我写了一个程序,将温度从摄氏温度转换为华氏温度。当我输入c时,代码按预期工作,但当我输入f时,它会给我一个随机数:

#include <stdio.h>

int main (void){
    float f,c;

    printf("x=Ende c=Umrechnung c->f f=Umrechnung f->c:");
    if(scanf("c",&c)==c){
        printf("Grad Celisius =");
        scanf("%f",&c);
        f=(c*1.8)+32;
        printf("%.2f Grad Celisius sind %.2f Grad Fahreiheit\n",c,f);
    }
    else if(scanf("f",&f)==f){
        printf("Grad fahrenheit =");
        scanf("%f",&f);
        c=(f-32)/1.8;
        printf("%.2f Grad Fahrenheit sind %.2f Grad Fahrenheit",f,c);
    }
    return 0;
}

如何解决问题?

1 个答案:

答案 0 :(得分:1)

您没有正确使用scanf()命令。我稍微修改了你的代码,这对我有用:

#include <stdio.h>

int main (void){
    float f,c;
    char ch;

    printf("x=Ende c=Umrechnung c->f f=Umrechnung f->c:");
    scanf(" %c", &ch);
    if(ch=='c'){
        printf("Grad Celsius =");
        scanf("%f",&c);
        f=(c*1.8)+32;
        printf("%.2f Grad Celsius sind %.2f Grad Fahrenheit\n",c,f);
    }
    else if(ch=='f'){
        printf("Grad Fahrenheit =");
        scanf("%f",&f);
        c=(f-32)/1.8;
        printf("%.2f Grad Fahrenheit sind %.2f Grad Celsius",f,c);
    }
    return 0;
}

基本上,您只读过一次字符(ch),然后将其与程序提供的选项进行比较。请注意" %c"scanf()中的空格字符。可能需要它以使代码正常工作,如here所述。

我想你也想绕过代码循环,这样就可以让用户输入x来结束程序。目前,如果您未输入cf,该计划将终止。该计划也在一次计算完成后终止。

顺便说一句,我还在上一个Celsius中将一个Fahrenheit更改为printf()。我觉得你把那些话弄糊涂了。我还将Celisius更改为Celsius