- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:while文について、c言語です。)
C言語のwhile文を使った階乗計算プログラムの実行結果が常に1になる問題
このQ&Aのポイント
- C言語でプログラムを始めたばかりの人が、while文を使って正整数nの階乗を計算するプログラムを作成しましたが、実行結果が常に1になってしまいます。
- プログラムは、入力された正整数nから1までの数を順番にかけていき、最終的な結果を表示するものです。しかし、なぜか計算結果が1になってしまっています。
- 問題の原因は、scanf関数で入力された値を受け取る際に、%lfと誤ってdouble型として読み込んでしまっていることです。正しくは%dを使って整数型として読み込む必要があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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だけになりますよ。