2

階乗分解用の Delphi プログラムを作成しましたが、次のようになります。

ここに画像の説明を入力

40 は数字で、「Scomponi」をクリックすると正しい出力が得られます (2^3 * 5 = 40)。同じことを行うCプログラムを作成しましたが、次の出力があります。

ここに画像の説明を入力

ご覧のとおり、右側の数値は正しい (2^3 * 5) ですが、左側の数値は正しくありません。これは私が書いたコードです:

int main()
{
 long a,b=2;  
 printf("------------------------------------------------ \n \n"); 
 printf("Inserisci il numero di cui vuoi la scomposizione \n"); //input number (it's the 40 of the example)
 scanf("%d", &a);
 printf("\n------------------------------------------------ \n\n");
 printf("Scomposizione: \n \n"); //Decomposition
  while(a>1)
  {
   if(a%b == 0)      
    {
     printf("%d \t \t | %d \n",a,b);
     a=a/b;   
    }
   else
    {
     b++;    
    } 
    printf("%d", a);
  }
   printf("\n------------------------------------------------ \n\n");
 getch();
 return 0;    
}

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

8
   else
    {
     b++;    
    } 
    printf("%d", a);
  }

最後printfはここにあってはいけません。それを除く。

補足として:

aおよびbタイプはlongです。

したがって、代わりに:

scanf("%d", &a);

あなたが使用する必要があります:

scanf("%ld", &a);

についても同様で、の代わりに変換指定をprintf使用します。%ld%d

于 2013-07-15T20:14:29.577 に答える