pow函數(數學次方)在c語言的用法,兩種編寫方法實例( 計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值)


 

頭文件:#include <math.h>

pow() 函數用來求 x 的 y 次冪(次方),x、y及函數值都是double型 ,其原型為:
    double pow(double x, double y);

pow()用來計算以x 為底的 y 次方值,然后將結果返回。設返回值為 ret,則 ret = xy。

可能導致錯誤的情況:
如果底數 x 為負數並且指數 y 不是整數,將會導致 domain error 錯誤。
如果底數 x 和指數 y 都是 0,可能會導致 domain error 錯誤,也可能沒有;這跟庫的實現有關。
如果底數 x 是 0,指數 y 是負數,可能會導致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現有關。
如果返回值 ret 太大或者太小,將會導致 range error 錯誤。

錯誤代碼:
如果發生 domain error 錯誤,那么全局變量 errno 將被設置為  EDOM;
如果發生 pole error 或 range error 錯誤,那么全局變量 errno 將被設置為 ERANGE。
Math.pow(底數,幾次方)
如:double a=2.0;
    double b=3.0;
double c=Math.pow(a,b);
就是2的三次方是多少;
c最終為8.0;

 

 

 


 

計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。

分別用了兩種方法計算,第一種比較簡單用了兩個for循環,第二個采用pow函數,用了一個for循環:

第一個程序:

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     //將分成兩部分進行
 6     int i;
 7     double j = 0.0, k = 0.0;
 8     int a;
 9     double b = 0.0, c = 0.0;
10     double d;
11     for (i = 1; i <= 50; i++){
12         j =1.0/ (2.0 * i - 1.0);
13         k = k + j;
14 
15     }
16     for (a = 1; a <= 50; a++){
17         b = -1.0/(2.0 * a);
18         c = c + b;
19 
20     }
21     d = k + c;
22     printf("%f\n", d);
23     system("pause");
24     return 0;
25 }

 

第二個程序:

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 int main()
 5 {
 6     int i;
 7     double sum = 0.0, temp = 0.0;
 8     for (i = 1; i <= 100; i++)
 9     {
10         temp = pow(-1, i + 1);
11         sum = sum + temp * 1 / i;
12     }
13     printf("sum is %f\n", sum);
14     system("pause");
15     return 0;
16 }

運行結果一樣,也是0.688172.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM