• 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
      ", value1);
       8 
       9     double value2 = pow(2.22,3.0);
      10     printf("value2 = %f
      ", value2);
      11 
      12     double value3 = pow(5.21,4.11);
      13     printf("value3 = %f
      ", 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
      ", value1);
      26 
      27     double value2 = mypow(2.22,3.0);
      28     printf("value2 = %f
      ", value2);
      29 
      30     double value3 = mypow(5.21,4.11);
      31     printf("value3 = %f
      ", 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"(链接库函数的文件);否则会报错。

  • 相关阅读:
    ASP.NET MVC学习系列(二)-WebAPI请求
    dynamic介绍
    C#中dynamic的正确用法 以及 typeof(DynamicSample).GetMethod("Add");
    json中jobject
    泛型类型参数及约束
    new 运算符
    内核知识第五讲.驱动框架编写,以及3环和0环通信.
    编写内核驱动加载工具
    内核知识第四讲,简单的认识内核函数.以及调试驱动技巧
    内核第三讲,进入ring0,以及编写第一个内核驱动程序.
  • 原文地址:https://www.cnblogs.com/Bob-tong/p/6622587.html
Copyright © 2020-2023  润新知