OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

階乗のプログラム!!

  • すぐに回答を!
  • 質問No.211528
  • 閲覧数1029
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 25% (39/151)

階乗を求めるプログラムを作りたいのですが、どうも上手くいきません・・・。下のプログラムを作ってみたのですが、エラーになってしまいます。どなたか教えてください、お願いします!!

#include <stdio.h>

void main(void)
{
int i,j;
long a=1;

for (i=1; i<=10; i++){
for(j=1 ;j <=i; j++){
a=a*j;
}

printf("%3d %ld \n",i,a);
}
}
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 60% (21/35)

これって 1~10までの階乗を出力するってプログラムですよね?
実際に階乗の計算を行ってるのは2つ目のforループで行っていると
思いますが、その前にaを初期化してない為に前に計算した階乗の値が
残ってしまってるからじゃないかと思います。

for (i=1; i<=10; i++){
 a = 1; //←初期化
 for(j=1 ;j <=i; j++){
  a=a*j;
 }
 printf("%3d %ld \n",i,a);
}

もしくは...
int num = 10; //求める階乗数
int a,i;
for(i=1,a=1;i<=num;i++,a=a*i) printf("%3d %ld \n",i,a);

こんな感じになると思います。
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 24% (357/1463)

aの初期化のタイミングがおかしいのではないでしょうか。 各iについて出たaの値をそのまま(i+1)について使っていますから、 このままでは 1! 1!×2! 1!×2!×3!   : 1!×2!×3!×・・・10! を計算することになって、多分オーバーフローを起こします。 外側のforループと内側のforループの間で毎回 a=1 を実行すべきだと思います。
aの初期化のタイミングがおかしいのではないでしょうか。
各iについて出たaの値をそのまま(i+1)について使っていますから、
このままでは
1!
1!×2!
1!×2!×3!
  :
1!×2!×3!×・・・10!
を計算することになって、多分オーバーフローを起こします。
外側のforループと内側のforループの間で毎回
a=1
を実行すべきだと思います。
  • 回答No.3

 回答は他のかたがなさっているので、アドバイスと称して苦言を一つ。  プログラムが仕様通りの動作をしないとき、「どうも上手くいきません」「エラーになってしまいます」で片付けていたら、永久にプログラミングは上達しませんよ。  プログラムを書いてみたが、思い通りに動かない。それは、プログラミングでは当たり前です。むしろそれからが始まりです。「どうも上手くいきません」とは、具体的にどういう現象が起き ...続きを読む
 回答は他のかたがなさっているので、アドバイスと称して苦言を一つ。

 プログラムが仕様通りの動作をしないとき、「どうも上手くいきません」「エラーになってしまいます」で片付けていたら、永久にプログラミングは上達しませんよ。

 プログラムを書いてみたが、思い通りに動かない。それは、プログラミングでは当たり前です。むしろそれからが始まりです。「どうも上手くいきません」とは、具体的にどういう現象が起きるのでしょう。「エラーになってしまいます」とは、どんなエラーメッセージが出るのでしょう。得られる手がかりを駆使してバグの原因を絞り込んでいくのがプログラミングです。

 また、エラーメッセージすら示さずに質問をするなんて、他人に対するものの聞き方も覚えてください。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ