实现函数double Power(double base,int exponent),求base的exponent次方

该博客介绍了如何不使用库函数实现double Power(double base, int exponent)函数,计算base的exponent次方。文章讨论了非法输入情况,如0的0次方和0的负数次方,并提供了详细的解决方案。此外,还提到了如何判断double类型数值相等的方法,并给出完整的C++代码实现。" 80303449,7379590,Mat图像在MFC中显示与Halcon配置错误解析,"['图像处理', 'MFC', 'Halcon', 'C++', '数据转换']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. /* 
  2. copyright@nciaebupt 转载请注明出处 
  3. 题目:实现函数double Power(double base,int exponent),求base的exponent次方。 
  4. 不得使用库函数,同时不需要考虑大树问题。 
  5. 分析: 
  6. 这道题目有以下几点需要注意: 
  7. 1.  0的0次方是无意义的,非法输入 
  8. 2.  0的负数次方相当于0作为除数,也是无意义的,非法输入 
  9. 3.  base如果非0,如果指数exponent小于0,可以先求base的|exponent|次方,然后再 
  10. 求倒数 
  11. 4.  任何数的0次方都为0 
  12. 5.  判断double类型的base是否等于0不能使用==号。因为计算机表述小树(包括float 
  13. 和double型小数)都有误差,不能直接使用等号(==)判断两个小数是否相等。如果两 
  14. 个数的差的绝对值很小,那么可以认为两个double类型的数相等。 
  15. */  
  16. #include <iostream>
    #include <cstdio>
    #include <cstring>


    using namespace std;


    bool invalidInput = false;


    bool equal(double num1, double num2){  //对一个double型数相等的判断;


        if(num1 - num2 > -0.0000001 && num1 - num2 < 0.0000001)
            return true;
        return false;
    }


    double Power(double base, int exponent) {  //注意分母不能为零。


        if(equal(base, 0.0) && exponent < 0){


             invalidInput = true;
            return 0.0;
        }
        if(exponent == 0){


            return 1;
        }
        int absexponent = exponent;
        if(exponent < 0){


            absexponent = - exponent;
        }
        double result = 1.0;
        for(int i = 0; i < absexponent; i++)
            result = result*base;
        if(exponent < 0)  //负指数幂求和后应取倒数;
            result = 1.0/result;
        return result;
    }


    int main()
    {
       double n;
       int m;
       while(cin>>n>>m) {


            printf("%lf\n", Power(n, m));
       }


        return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值