2013-01-20 21 views
5

我試圖改變飛輪海開爾文ANF公式爲K = 5/9 (° F - 32) + 273更改到華氏開爾文用C

我的代碼是:

#include <stdio.h> 
double const changeToC = 32.0; 
double const changeToK = 273.16; 

void temperatures(double n); 

int main(void) 
{ 
    int q = 'q'; 
    double userNumber; 

    printf("please enter fahrenheit number: \n"); 
    scanf("%f", &userNumber); 

    while (userNumber != q) 
    { 
     temperatures(userNumber); 
     printf("\n"); 
     printf("please enter fahrenheit number: \n"); 
     scanf("%f", &userNumber); 
    } 
} 

void temperatures(double n) 
{ 
    double celsius, kelvin; 

    celsius = 5.0/9.0 * (n - changeToC); 
    kelvin = 5.0/9.0 (n - changeToC) + changeToK; 

    printf("fahrenheit is: %.2f - celsius is: %.2f - kelvin is: %.2f", 
      n, celsius, kelvin); 
} 

我需要輸入雙獲得華氏度,並打印攝氏和開爾文的值。

在華氏開爾文(kelvin = 5.0/9.0 (n - changeToC) + changeToK;)線,我得到一個錯誤:

called object type double is not function or function pointer

能否請你告訴我這是什麼意思?

+0

是讀了'double',你_have_在'scanf函數使用'%lf'作爲轉換(3)' – vonbrand

回答

8

你錯過了乘法運算,*

kelvin = 5.0/9.0 * (n - changeToC) + changeToK; 

沒有乘法運算符,編譯器將括號()的函數調用操作符。

+0

謝謝@大衛赫弗南! – MNY

+1

代碼的另一個問題:scanf(「%f」,&userNumber);應該是scanf(「%lf」,&userNumber);因爲%f預期浮動而不是雙倍。 – fbafelipe

+2

@fbafelipe:'%f'需要一個** double **。 – Mat

0
kelvin = 5.0/9.0 * (n - changeToC) + changeToK; 

將乘法運算..解決您的問題