0

我有一个计算双数幂的函数,下一个任务是添加选项,以便它可以处理负幂。

所以我将此代码添加到函数中:

if (p < 0)
    {
        for (y = 1; y <= p; y++)
        {
            pow *= n;
        }
        pow = 1/pow;
    }

整个程序很短,所以我也将分享它:

#include <stdio.h>
double power(double n, int p); // ANSI prototype

int main(void)

{
    double x, xpow;
    signed int exp;
    printf("Enter a number and the positive integer power");
    printf(" to which\nthe number will be raised. Enter q");
    printf(" to quit.\n");
    while (scanf("%lf%d", &x, &exp) == 2)
    {
        xpow = power(x,exp); // function call
        printf("%.3g to the power %d is %.5g\n", x, exp, xpow);
        printf("Enter next pair of numbers or q to quit.\n");
    }
    printf("Hope you enjoyed this power trip -- bye!\n");
    return 0;
}
double power(double n, signed int p) // function definition
{
    double pow = 1;
    int i;
    int y;

    if (p < 0)
    {
        for (y = 1; y <= p; y++)
        {
            pow *= n;
        }
        pow = 1/pow;
    }


    for (i = 1; i <= p; i++)
        pow *= n;

    return pow; // return the value of pow
}

如果我输入输入和我想得到5.0的功率,我得到......-30.0081

4

2 回答 2

1

你忘了一个 else 吗?如果

if (p < 0)
{
    for (y = 1; y <= -p; y++)
    {
        pow *= n;
    }
    pow = 1/pow;
}
else

for (i = 1; i <= p; i++)
    pow *= n;
于 2013-02-05T22:26:59.727 回答
0

如果你输入你的力量为 -3,你的 for 条件都不成立。

   if (p < 0)
    {
        for (y = 1; y <= p; y++)
        {
            pow *= n;
        }
        pow = 1/pow;
    }

如果 p < 0,y 永远不会小于 p。

于 2013-02-05T22:27:06.473 回答