0

ユーザーが入力した数値の階乗を与えるプログラムを書きました。これは割り当て用であり、最初の関数が値を読み取り、それをメインに渡し、メインがこれを2番目の関数に渡し、数値の階乗を計算してユーザーに出力するように記述する必要があります。問題は、すべての数値の階乗として「1」が表示され続けることです。私は何を間違っていますか?

#include <stdio.h>

int getValue()
{

    int n;

    printf("Enter number: ");
    scanf("%d%*c", &n);

    return(n);
}

int factorial(int n)
{

    int i, f;

    f=1;
    for(i=1; i<=n; i++)
    f=f*i;

    printf("The factorial is: %d", f);

    return(f);
}

int main()
{

    int f;

    getValue();
    factorial(f);

    return(0);
}
4

1 に答える 1

2

これを設定していない場合f、問題は解決するはずです:

int main()
{
    int f = getValue();
    factorial(f);

    return(0);
}

scanfそれ以外の場合はコンパイルされないため、コードにタイプミスがあると想定していますが、次のようにする必要があります。

scanf("%d%*c", &n);
            ^  
于 2013-04-16T18:18:13.430 に答える