#include<stdio.h>
double power(double ,double );
double pow_num(double, double);
int main(void)
{
double x, y, ans;
while ((scanf("%lf %lf",&x,&y))==2)
{
ans = power(x, y);
printf("%.5lf\n", ans);
}
return 0;
}
double power(double x, double y)
{
double pow = 1.0;
if (y>=1)
{
for (size_t i = 0; i < y; ++i)
pow *= x;
}
else if ((y<1)&&(y>0))
{
double j, p = 0;
j = 1 / y;
for (double i = 1.00000; p <= x; i = i+0.000001)
{
p = pow_num(i,j);
pow = i;
}
}
else if(y<0)
{
double j = x;
for (size_t i = 0; i < y; ++i)
j *= x;
pow = 1 / j;
}
else
pow = 1.0;
return pow;
}
double pow_num(double x, double y)
{
double num = 1.0;
for (size_t i = 0; i < y; ++i)
{
num *= x;
}
return num;
}
C Primer Plus 9.11第八题(可计算次方幂不为整数时结果)
最新推荐文章于 2024-07-13 15:11:03 发布