请c语言高手帮忙看看这个程序哪里出了问题,是一个计算任意数的n次方的程序,非诚勿扰。

float mi1(float x,float n)
{
float i,sum=1;
for(i=1;i<=n;i++)
sum*=x;
return sum;
}

float mi2(float x,float n)
{
float i,sum=1;
for(i=-1;i>=n;i--)
sum*=x;
sum=1/sum;
return sum;}
main()
{
float a,b,p;
printf("请分别输入底数和指数,空格键分隔\n");
for(;;)
{scanf("%d%d",&a,&b);
if(a==0&&b==0){printf("输入错误\n");continue;}
if(a!=0&&b==0)p=1;
if(b>0)p=mi1(a,b);
else p=mi2(a,b);
printf("%d^%d=%d\n",a,b,p);
}
}

第1个回答  2012-12-20
单精度的有效位数是有限的(应该是6到7个,不太记得了),虽然数的大小范围不小,所以你这个程序运行结果会有很大偏差。程序应该是没有错的。
第2个回答  2012-12-21
变量的定义,变量的精度,和scanf的用法都有问题,按你写的应该是f%、
第3个回答  2012-12-20
把所有的float都换成int本回答被网友采纳
相似回答
大家正在搜