2015-11-07 206 views
-2

我编写了一个程序,将温度从摄氏温度转换为华氏温度。当我进入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; 
} 

我怎样才能解决我的问题?

+3

“这是错误的”不是错误描述。你期望发生什么,发生了什么? – fuz

+0

当我执行程序并键入f将温度从华氏温度转换为摄氏温度时,它给了我一个随机数 –

+2

if(scanf(“c”,&c)== c)你为什么写这个? – Cherubim

回答

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)只有一次,后来把它比作你的程序提供的选项。请注意0​​行中" %c"的空格字符。可能需要使代码正常工作,如here所述。

我想你也想对你的代码进行一个循环,所以有必要让用户输入一个x来结束程序。目前,如果您未输入cf,程序将终止。该程序在一次计算完成后也会终止。

顺便说一下,我还在您最近的printf()中将Celsius更改为Fahrenheit。我想你在那里混淆了那些话。我也将Celisius更改为Celsius

+0

它的作品谢谢;;你救了我 –

+0

我很高兴得到了帮助!随意[接受我的回答](http://meta.stackexchange.com/q/5234/294055),如果你觉得它对你有用:) – honk

+0

当然,我会感谢 –

相关问题