c語言計算為什麼結果不對,c語言計算結果不對 哪裡有問題?

時間 2021-08-30 11:19:49

1樓:匿名使用者

在double轉換成int時,應當考慮到數值並不準確的問題,可以考慮自己要求的精度極限,比如是0.00000001,可以寫成:printf("%d\n",(int)(a/pow(10,b-1)+0.

000000005); 這樣可以配合取整實現在那位上的四捨五入。

2樓:gta小雞

計算整數的冪,不要使用pow函式,它返回的是double型別,轉換成int型別後可能存在誤差。自己編寫一個函式或迴圈實現,很簡單。

3樓:聽不清啊

這是演算法設計上的問題。

一般而言,浮點運算會帶來誤差,不同的編譯器會有不同。

如果浮點運算的結果是5.00000000……就發現不了誤差;而算成了4.9999999999.……後,經(int)就變成了4。

如果寫成a/1000就不會有誤差存在。

也可以自己寫一個intpow()函式。

int intpow(int x,int n)

4樓:飛向夢想飛向未來

這個是因為pow計算的時候精度引起的。比如2.0/2.

0,他的結果理論是1.0,但有些編譯器結果會是0.999999999999999999,這個很接近1了,但是你將這個數取整,結果會是0.

你上面用%lf來列印,會發現一個是5.0000***,一個會是4.999999***x。

5樓:匿名使用者

應該是編譯器的問題。樓主左圖使用的編譯器在資料型別轉換上有一點問題。

6樓:檢憶桖

函式pow(x, y)的功能是計算x的y次冪,其返回值是一個雙精度浮點型資料。當在c語言的編洋程式處理數值運算時,如果算式中出現浮點型資料,為了保證運算的精度,則與該浮點數相運算的其它型別運算元也要先轉為浮點型資料,然後再參與運算。不同版本的編譯軟體生成的操作在進行浮點型資料轉換和運算處理時,演算法不完全一樣,有可能會產生誤差。

在此題目中在,算式a/pow(10,b-1)的運算元a,b雖都是整型數,但運算時要先轉換成浮點型,且產生浮點型運算結果。由於浮點數表示時可能產生誤差,5可能會表示為4.9999999…(對於雙精度浮點數,小數點後面的有效位數可達到15一16位)。

然而,在將其轉換為int型時,只擷取了整數部分,導至出現了4這個結果。

7樓:百香果媽媽輔食

第二張圖是正確的,結果都是5,可能是第一個編譯器有點問題

8樓:匿名使用者

浮點數計算誤差大,計算你可以選python

c語言計算結果不對 **有問題?

9樓:物理公司的

void num的max和main中的max以及min並不是同一個,main中的max和min都是未初始的值。max和min可以定義為全域性或者要把max和min返回去

10樓:

有兩個錯誤的地方,首先是主函式上面,讀取值得scanf中沒有取址符&,所以輸入的數根本沒有讀入記憶體,無法參加運算,其次是主函式的max 和 min你又在num函式中定義了,並且num函式沒有返回值所以計算不對。最後為什麼會輸出這兩個數,是因為輸入的資料沒有取址符,沒有讀入記憶體無法參加運算,所以輸出了兩個隨機數

11樓:

#include

void num(int *a, int n, int *max, int *min)

int *p;

int i = 0;

int j = 0;

*max = a[0];

*min = a[0];

for (p = a; p < a + n; p++)if (*max < *p)

*max = *p;

i = p - a;

if (*min > *p)

*min = *p;

j = p - a;

void main()

int a[10], *p;

int max;

int min;

printf("input:");

for (p = a; p < a + 10; p++)scanf("%d", p);

num(a, 10, &max, &min);

printf("max=%d,min=%d", max, min);

c語言程式設計題計算,C語言程式設計題 計算Cmn

cmn是一個數學上的公式,其中m是其的下角標,n是其的上角標。計算方法是 m m 1 m 2 共有n項的乘積,然後除以n的階乘 用c語言做這個計算的程式設計,步驟如下 1 首先需要讀取m和n的值,然後在讀取的同時進行判斷是否滿足m 0 n 0 m n的條件,如果不滿足要求重新輸入。2 然後可以構建兩...

c語言中計算,c語言中計算100 1000之間有多少個數,其各位數字之和是5的程式

示例 include intmain if s 5 continue else count 擴充套件資料 include int addnumbers int n int main int num printf 輸入乙個整數 scanf d num printf sum d addnumbers n...

c語言簡單計算器,C語言簡單計算器

淚珠畫滿蒼穹 1.首先開啟vc 2.檔案 新建 3.新建乙個c 文件 4.先宣告主函式還有變數 include char token 5.程式用到幾個函式,下面介紹這幾個函式 這個函式是運算子匹配程式 void match char expectedtoken 對當前的標誌進行匹配 if token...