【发布时间】:2018-09-08 19:57:47
【问题描述】:
我正在尝试在不使用 pow 的情况下制作一个用于 C 学习目的的小功率计算器, 但是当指数为负时它总是返回0.00,请帮助。
完整代码:
#include<stdio.h>
//* power caculator function
int power(x,y)
{
float p=1.00;
int i;
if (y<0){
y=-1*y;
x=1/x;
}
for (i=1;i<=y;i++)
{
p=p*x;
}
return p;
}
//* main gets input, calls power caculator and prints result'
int main()
{
int b;
int e;
float p;
printf("enter base");
scanf("%d",&b);
printf("enter exponent");
scanf("%d",&e);
p=power(b,e);
printf("%d to the power of %d is %.2f",b,e,p);
return 0;
}
//* I am NOOB
【问题讨论】:
-
int power(x,y)参数类型是什么?另外请注意编译器警告。通过省略类型,编译器会假定它们是int。您确实提供了int参数,但x=1/x;假定整数除法。 -
1/x是什么x > 1? -
pow() 可以很好地处理负指数,但是你可以通过声明你的函数返回 int 来切断它们。
-
截断是一个与其他基本问题不同的问题。 1 除以任何 int 为 0。
-
power()的返回值为int。所以即使你得到正确的参数类型(或转换),任何负幂(结果0。