//正整数幂
#include<stdio.h>
#include<ctype.h>
double power(double a,int n);
int main()
{
double x;
int exp;
printf("Enter x and exp\n");
while(scanf("%lf%d",&x,&exp)==2)
{
printf("%.3f to the power %d is \n%",x,exp);
printf("%.5f\n",power(x,exp));
printf("again");
}
printf("Enter q to exit\n");
printf("Bye!");
return 0;
}
double power(double a,int n)
{
int i;
double c=1;
for(i=0;i<n;i++)
c*=a;
return c;
}
//推广到幂为任意整数
#include<stdio.h>
#include<ctype.h>
double power(double a,int n);
int main()
{
double x;
int exp;
printf("Enter x and exp\n");
while(scanf("%lf%d",&x,&exp)==2)
{
printf("%.3f to the power %d is \n%",x,exp);
printf("%.5f\n",power(x,exp));
printf("again");
}
printf("Enter q to exit\n");
printf("Bye!");
return 0;
}
double power(double a,int n)
{
int i;
double c=1;
if(!n)//任意数的零次幂
{
if(!a)
printf("illegal.\n");
c=1.0;
}
else if(!a)//零的任意次幂
c=0.0;
else if(n>0)//正整数幂
for(i=0;i<n;i++)
c*=a;
else//负整数幂
for(i=0;i<-n;i++)
c*=1/a;
return c;
}
//下面截取循环法段落
lse if(n>0)//正整数幂
for(i=0;i<n;i++)
c*=a;
else//负整数幂
for(i=0;i<-n;i++)
c*=1/a;
和另外给出的递归法
else if(n>0)//正整数幂
c=a*power(a,n-1);
else//负整数幂
c=1/power(a,-n);
经过本人推导和验证,两者等价。用递归程序更为简洁。