0

私はcプログラミングに不慣れです。階乗のプログラムを作成しましたが、正しく機能しません。以下のコードを追加しています。

#include <stdio.h>
#include <conio.h>
void main()
{
    int x=1;
    int z,n;
    scanf("%d",&n);
    for(z=1;z<=n;z++)
    {
        x=x*z;
    }
    printf("%d",&x);
    getch();
 }
4

4 に答える 4

4

printf("%d", x)の代わりに使用してくださいprintf("%d", &x)

于 2013-03-05T18:43:40.713 に答える
4

これらはあなたがあなたのプログラムでしなければならない修正です

  1. そうでprintf("%d", x)はありませんprintf("%d", &x)
  2. 使用を避けてください#include<conio.h>、それは減価償却されます。
  3. すべてがうまくいけば、int main()の代わりにを使用し void main()、正の整数を返すことをお勧めします。0
于 2013-03-05T18:47:11.077 に答える
3

単項演算子として、タイプが。&xのアドレスを返します。これは次のように解釈できますが、通常、間違ったフォーマットフラグで何かを印刷しようとすると、コンパイラは警告を出します(GCCをコンパイラオプションとして使用する場合)。xint*int-Wall

アドレスを出力したくないので、の値はx不要なオペランドを削除するだけです。

printf("%d", x);
于 2013-03-05T18:45:21.987 に答える
0

まず、intの使用可能なスペースが小さい場合、最大値はn=15になります。

第二に、ライブラリを使用する必要はありませんconio.h

第三に、使用しているために機能しない&x、消去して機能する

第4に、 forステートメントを1行で実行できます

第五に、に変更void main()し、最後int main()に追加しますreturn 0;

第六に、このコードはあなたのために働きます

#include <stdio.h>
int main()
{
    int x=1;
    int z,n;
    scanf("%i",&n);
    for(z=1;z<=n;x*=z++,printf("value of z is =%i , value of  factorial is =%i\n",z,x));
    printf("%i",x);
    return 0;
 }
于 2013-03-05T21:39:36.617 に答える