2013-10-15 42 views
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); 
      } 
} 

所以它要求什麼溫度輸入和起始溫度,但爲什麼不計算數學公式?

+0

您需要說出發生了什麼。 – occulus

+0

c,f,k ..來自哪裏? – user2864740

+0

'c','f'和'k'是什麼?你是否打算打印'celcius','華氏'和'開爾文'? – Kninnug

回答

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 

或更好scanf(" %c", &temp);後放置

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

。這將消耗除輸入的第一個字符以外的所有字符。

根據OP的評論;

我該怎麼做才能使溫度名稱出現在溫度的頂部?

printf("celcius \tfahrenheit \tkelvin); 
printf("%5f\t%5f\t%5f", celcius, fahrenheit, kelvin); 
+0

是的,這是正確的。很抱歉。編程和本網站新手,所以我現在覺得自己像個白癡。謝謝!也是一個快速的問題。我怎樣才能使溫度名稱出現在溫度的頂部? –

+0

@LewisM .;更新了我的答案。 – haccks

+0

非常感謝@haccks這是我需要的答案! –

1

你沒有告訴你如何定義你的變量temp,但它是極其危險的閱讀這樣的字符串。如果temp是一個字符,那麼指向它的地址並將其視爲一個字符串是在尋求麻煩。當然,你會在temp之後立即寫下'\0',如果用戶輸入的不止一個字符,他們可以做的傷害更大。

可以讀取單個字符用getc電話:

temp = getc(stdin); 

我建議你確保它是小寫 - 因爲你是用c比較:顯然

temp = lower(getc(stdin)); 

然後,當你打印出一個變量時,你必須打印出你計算的那個。你計算celcius,等等 - 但你的print語句是

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

cfk可能是有效的變量 - 但他們不是你的行前計算的人。與

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。但那是你的問題中最少的。

1

看起來像是在計算,但是你打印的是錯誤的變量。嘗試用打印語句中的攝氏,華氏和開爾文替換c,f和k。

1

你的變量名必須一致,你不能像你一樣混淆它們。

因爲你像這樣計算的:

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

但該行沒有被打印出來,因爲你有錯誤的變量:

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

修改成正確的變量名,類型如下:

printf("%f, %f, %f", celcius, fahrenheit, kelvin); 
相關問題