2015-01-01 24 views
-1

我剛開始學習C編程。帶點編號的數學任務

我想編寫一個程序來解決這個數學問題(1/2 * R * 3.14)

這是我寫的代碼:

#include <stdio.h> 
#include <conio.h> 
main() 
{ 
int r=5; 
float sum; 
sum = 1/2*r^2*3.14; 
printf("%f", sum); 
getch(); 
} 

但有一個錯誤,我不知道錯誤是什麼。 首先,我認爲有什麼不對的約數3.14,但是當我把它改爲3程序運行,但得到的答覆是6.0000,但它應該是37.5

+3

因爲你在做'int'計算,所以'1/2'總是0。 – Maroun

+1

'main()'應該是'int main()'或'int main(void)'並且在末尾添加一個'return 0;'。你的編譯器(至少)沒有給出這個警告嗎?即使古老而傳奇的TurboC也會發出警告。 –

回答

3

在C中沒有用於功率計算的算子。 ^被用作XOR運算符。您需要使用庫函數pow進行功耗計算。

sum = 1.0/2 * pow(r,2) * 3.14; 

注意,我改變1/21.0/2因爲1/2總會給0,你會得到的結果是0

2

^是按位異或運算符。你必須使用pow()爲你的目的

sum = 1.0/2.0*pow(r,2)*3.14; 

你的代碼會給你6.000。由於^使用作爲XOR操作

1/2*r^2*3 = (0)d^(6)d = (000)b^(110)b = (110)b = (6)d 

但是,3.14代替3會給你錯誤

1/2*r^2*3.14 

因爲,異或操作不採取雙操作數

+3

只有一方「.0」就足夠了。 – Maroun

+1

*沒有^運營商*:你認真嗎? – haccks

+3

'^'不是電力運營商,但它是編程中最重要的運營商之一,xor。 – Maroun

0

^運營商不是爲了提高權力,你可以明確地寫出

#include <stdio.h> 
#include <conio.h> 
main() 
{ 
    int r=5; 
    float sum; 
    /* 1/2 * r^2 * pi <- this is the expression */ 
    sum = 1.57 * r * r; 
    printf("%f", sum); 
    getch(); 
} 

表達在程序中沒有實際意義,只是有人讀它,這樣你就可以添加評論並直接寫入值。

而且如果您要提高功率,只需使用pow()函數。

另外,如果你跳過.0則編譯器假定值作爲整數,1/20.5截斷它yeilds 01./2也將工作,但不是1/2

+0

當0.5取整時,結果將爲1而不是0.正確的單詞將被「截斷」,即小數部分被忽略。 –