题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解答
#include<stdio.h>
#include<stdbool.h>
bool flag=false;
double Power(double number,int exponent)
{
double result = 1.0;
for(int i=1;i<=exponent;++i)
result *=number;
return result;
}
bool equal(double num1,double num2)
{
if((num1-num2>-0.00000001)&&(num1-num2<0.0000001))
return true;
else
return false;
}
double Pow(double number,int exponent)
{
flag=false;
//底数为0且指数为负的情况,非法输入
if(equal(number,0.0)&&exponent<0)
{
flag=true;
return 0.0;
}
unsigned int absexponent = (unsigned int)(exponent);
//讨论指数正负数的情况
if(exponent<0)
//如果为负,先统一化成正数,最后在去倒数
absexponent = (unsigned int)(-exponent);
double result = Power(number,absexponent);
if(exponent<0)
result=1.0/result;
return result;
}
int main()
{
double num=2.0;
printf("%f/n",Pow(num,3));
return 0;
}