0

double 数のべき乗を計算する関数があり、次のタスクは、負のべき乗を処理できるようにオプションを追加することでした。

だから私はこのコードを関数に追加しました:

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と電源を入力すると、-3取得すると思われますが0.008、取得すると1...

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 条件はどれも true になりません。

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

p < 0 の場合、y が p 未満になることはありません。

于 2013-02-05T22:27:06.473 に答える