2017-07-29 73 views
-6

我試圖讓這個程序工作,沒有成功。該程序涉及浮點類型的算術運算,由溫度()函數組成,將華氏轉換爲攝氏溫度。該函數從for循環獲取輸入,但是當我執行它時,我只獲得第一次轉換。我究竟做錯了什麼?以下是代碼:程序不會運行?

#include<stdio.h> 

float temperature(int); 

int main() { 
    int i; 
    for (i = 0; i <= 300; i = i + 20) 
     printf("%3d\t%6.2f\n", i, temperature(i)); 
    return 0; 
} 

float temperature(int m) { 
    float low, up, step, f, t; 
    float j = 5.0/9.0; 
    for (f = low; f <= up; f = f + step) 
     t = j * (f - 32.0); 
    return t; 
} 
+3

你不會在'溫度'中使用'm'。並使用未初始化的變量。 – BLUEPIXY

+3

您實際上沒有初始化函數中的任何變量。 –

+1

您還在'temperature'內的循環的每次迭代中分配給't'。函數返回的最終值將是最後一次迭代的結果。也許你應該在循環中打印結果* –

回答

2

正如其他人所說。調試代碼的最好方法是分析它。你必須明白你的代碼的作用。計劃你的代碼。在問這裏之前盡力解決問題 - 這是學習的最佳方式。

我相信這是你試圖實現:

#include <stdio.h> 

int main() { 
    float fahr, celsius; 

    int lower, upper, step; 

    lower = 0; 
    upper = 300; 
    step = 20; 

    fahr = lower; 

    while (fahr <= upper) { 
     celsius = (5.0/9.0) * (fahr-32.0); 
     printf("%3.0f\t%6.2f\n", fahr, celsius); 
     fahr = fahr + step; 
    } 
} 

仔細閱讀代碼。上面的例子只有一個功能。您可以輕鬆將其分爲兩個功能,一個功能負責溫度轉換,另一個功能負責從主循環中的0到300循環。 如果有些事情沒有意義 - 問問!這是這個論壇的目的。

#include <stdio.h> 

float convert (float fahr) { 

    float celsius = (5.0/9.0) * (fahr-32.0); 

    return celsius; 
} 

int main() { 

    int lower, upper, step; 

    lower = 0; 
    upper = 300; 
    step = 20; 

    float fahr = lower; 

    while (fahr <= upper) { 
     printf("%3.0f\t%6.2f\n", fahr, convert(fahr)); 
     fahr = fahr + step; 

    } 

} 
+0

在定義不注意命令行參數的'main()'時,請至少使用'int main()',最好使用'int main(void)'。就個人而言,我認爲從'main()'明確地返回0;'不是每個人都同意的。你有'低,高,一步; lower = 0;上部= 300; step = 20;' - 使用會更好:'int lower = 0; int upper = 300; int step = 20;'在不同的行上。這將根據定義初始化每個變量 - 並且如果需要的話,允許每個變量的註釋。一般來說,每行一個變量是很好的。 –