用C语言编写一个计算用来求 x 的 y 次幂的函数:int Pow(int x,int y)。

编写一个计算用来求 x 的 y 次幂的函数:int Pow(int x,int y)。如果x 和 y 的取值较大时,是否能够得到正确的结果,那么应该怎么修改程序以解决?
我写了下列程序,不能解决x,y取值较大时得到正确结果的问题 比如10的10次方输出结果就为1410065408
请问应该如何修改?
#include <stdio.h>
int main()
{
int a,b,ret;
scanf("%d %d",&a,&b);
ret=Pow(a,b);
printf("%d的%d次方为%d",a,b,ret);
}
int Pow(int x,int y)
{
int i,sum=x;
for(i=1;i<y;i++)
x*=sum;
return x;
}

看的出来你用的是32位的软件(1410065408约为2的30(1073741824)次方到31次方(2 147 483 648)),那int的最大长度就是32位,即-2 147 483 648~2 147 483 647间,超出这个长度就会显示不全导致错误,故可以将子函数的返回值设为double即64位,这样就可以存更多的数据了。追问

改了之后还是不对 可以写一下吗?

追答

修改1:子函数名称:double Pow(int x, int y)
修改2:输出语句:printf("%d的%d次方为%ld",a,b,ret); //换long输出
修改3:参数定义:double ret; //将int换成double来存储更长数据

追问

这样修改以后 输出结果变成了 10的10次方为0

追答

int Pow函数是你自己写的,还是用的原本库函数?

追问

是自己写的
刚刚找到别的方法解决了 谢谢你

温馨提示:答案为网友推荐,仅供参考