C語言--pow()函數實現

  爲何本身實現一個pow()函數呢?昨天在Linux操做系統中調用這一個函數時,一直報錯,也沒有查找到具體的緣由。故心血來潮實現這一函數功能。
函數所在頭文件:
  在"math.h"頭文件中
函數原型dom

  1. 1 double pow (doublebase,double exponent);

函數功能
  求base的exponent冪,即求某個數的多少次冪函數

函數參數
  base :基數(double類型)
  exponent :冪值,即進行多少次冪的值spa

函數返回值
  若是成功執行,返回求得某個數的多少次冪的值;不然,返回錯誤。操作系統

實例一:pow()函數簡單使用code

  1.  1 #include<stdio.h>
     2 #include<math.h>
     3 
     4 int main(void)
     5 {
     6     double value1 = pow(2.0,3.0);
     7     printf("value1 = %f\n", value1);
     8 
     9     double value2 = pow(2.22,3.0);
    10     printf("value2 = %f\n", value2);
    11 
    12     double value3 = pow(5.21,4.11);
    13     printf("value3 = %f\n", value3);
    14 
    15     return0;
    16 }

      運行結果:
blog

 

實例二:pow()函數實現代碼原型

  1.  1 #include<stdio.h>
     2 #include<math.h>
     3 //實現pow()函數
     4 double mypow(double num,double n)
     5 {
     6     double value =1;
     7     int i =1;
     8     if(n ==0)
     9     {
    10         value =1;
    11     }
    12     else
    13     {
    14         while(i++<= n)
    15         {
    16             value *= num;
    17         }
    18     }
    19     return value;
    20 }
    21 
    22 int main(void)
    23 {
    24     double value1 = mypow(2.0,3.0);
    25     printf("value1 = %f\n", value1);
    26 
    27     double value2 = mypow(2.22,3.0);
    28     printf("value2 = %f\n", value2);
    29 
    30     double value3 = mypow(5.21,4.11);
    31     printf("value3 = %f\n", value3);
    32 
    33     return0;
    34 }    

     

運行結果
it

操做注意:
  可能致使錯誤的狀況:io

  • 若是底數 x 爲負數而且指數 y 不是整數,將會致使 domain error 錯誤。
  • 若是底數 x 和指數 y 都是 0,可能會致使 domain error 錯誤,也可能沒有;這跟庫的實現有關。
  • 若是底數 x 是 0,指數 y 是負數,可能會致使 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現有關。
  • 若是返回值 ret 太大或者過小,將會致使 range error 錯誤。

  在使用"math.h"頭文件裏面的庫函數時,在Linux系統上進行GCC編譯時,須要在命令後面加上"-lm"(連接庫函數的文件);不然會報錯。編譯

相關文章
相關標籤/搜索