这个泡pow函数运行的时候,输入2跟4,结果是1;输入很多其他的数值结果也都是1。不知道为什么,求解答
你的输入在pow 计算后面啊
因为0的0次幂是1
你要把scanf放在前面呀
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[]) {
int x, y;
int sum;
printf("请输入两个数,第一个为低,第二个为幂\n");
scanf("%d %d", &x, &y);
sum = pow((double)x, (double)y);
printf("%d\n", sum);
return 0;
}
你把scanf放在pow前面,然后你的scanf内“%d,%d”之间是逗号,所以你键盘输入数时也要打逗号
解决方案:把第9行和第10行调换顺序即可
出现错误原因:
①在c语言中定义int类型变量,若没有赋值,那么会默认赋值为0,因此x=0,y=0
② 在第9行时pow(x,y)=pow(0,0)=1.0(注意:这里不是因为0的任何次幂都为1,而是pow函数当中是定义pow(0,0)=1.0)
而前面使用int类型进行强转,因此int sum=1
③后面随你输入x和y的值是多少,都没有对sum变量的值进行操作,因此sum的值永远都会是1啊
注意:数学当中零的零次幂是不合法的