2015-11-07 205 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

當然,我會感謝 –

相關問題