C语言--pow()函数实现

  为什么自己实现一个pow()函数呢?昨天在Linux操作系统中调用这一个函数时,一直报错,也没有查找到具体的原因。故心血来潮实现这一函数功能。
函数所在头文件:
  在"math.h"头文件中
函数原型

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

函数功能
  求base的exponent幂,即求某个数的多少次幂

函数参数
  base :基数(double类型)
  exponent :幂值,即进行多少次幂的值

函数返回值
  如果成功执行,返回求得某个数的多少次幂的值;否则,返回错误。

实例一:pow()函数简单使用

  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 }

      运行结果:

 

实例二: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 }    

     

运行结果

操作注意:
  可能导致错误的情况:

  • 如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
  • 如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
  • 如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
  • 如果返回值 ret 太大或者太小,将会导致 range error 错误。

  在使用"math.h"头文件里面的库函数时,在Linux系统上进行GCC编译时,需要在命令后面加上"-lm"(链接库函数的文件);否则会报错。

 

posted on 2017-03-26 13:46  bob-tong  阅读(11123)  评论(1编辑  收藏  举报

导航