【问题标题】:C Power function negative exponent without pow()没有 pow() 的 C 幂函数负指数
【发布时间】: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 &gt; 1
  • pow() 可以很好地处理负指数,但是你可以通过声明你的函数返回 int 来切断它们。
  • 截断是一个与其他基本问题不同的问题。 1 除以任何 int 为 0。
  • power()的返回值为int。所以即使你得到正确的参数类型(或转换),任何负幂(结果0。

标签: c function exponent


【解决方案1】:

您正在使用整数来保存十进制值,在本例中使用 x 和幂函数的返回类型。

尝试:

float power(x,y)
{
   float p=1.00;
   float xx = (float)x;
   int i;
    if (y<0){
        y=-1*y;
        xx=1/xx;
    }
    for (i=1;i<=y;i++)
    {
        p=p*xx;
    }

return p;
}

【讨论】:

  • 啊我现在看到了!谢谢米格尔!
  • 太棒了!最好的问候!
  • 不是反对者,但我认为这是因为该函数仍未明确定义 xy 的类型。
  • 是的...为参数定义类型会有很大帮助...我同意..我会自己投反对票...jejeje
【解决方案2】:

明确定义x和y的数据类型,然后调整返回数据类型。

【讨论】:

猜你喜欢
  • 2021-12-19
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多