• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:while文について、c言語です。)

C言語のwhile文を使った階乗計算プログラムの実行結果が常に1になる問題

このQ&Aのポイント
  • C言語でプログラムを始めたばかりの人が、while文を使って正整数nの階乗を計算するプログラムを作成しましたが、実行結果が常に1になってしまいます。
  • プログラムは、入力された正整数nから1までの数を順番にかけていき、最終的な結果を表示するものです。しかし、なぜか計算結果が1になってしまっています。
  • 問題の原因は、scanf関数で入力された値を受け取る際に、%lfと誤ってdouble型として読み込んでしまっていることです。正しくは%dを使って整数型として読み込む必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • DT200
  • ベストアンサー率38% (63/164)
回答No.1

while文はOKです。問題はscanfの"%lf"です。 ここは"%d"ですね。ちなみに、fは符号つき浮動小数点実数の時に使います。

その他の回答 (3)

  • shippo
  • ベストアンサー率38% (1216/3175)
回答No.4

#2です。すみません訂正です。プログラムを勘違いしてました。 先ほどの回答は無しにしてください。 で、答えとしては scanf("%lf", &n); の部分を scanf("%d", &n); にしたらできませんかね。

  • R-gray
  • ベストアンサー率39% (92/234)
回答No.3

scanf("%d",&n);で正しく動きます。 それ以外は問題ないです。

  • shippo
  • ベストアンサー率38% (1216/3175)
回答No.2

s = s * i; i = i + 1; として計算していますが変化するのは変数iだけですよね? これでは変数sはいつまでたっても1のままです。 計算上、1に何をかけても答えは1ですので、sの値も変化させるとかしない限り答えは1だけになりますよ。

関連するQ&A