関数double fact(int n)を作成し、main で呼び出し、
入力が負になるまで number=を繰り返すプログラムを作成しようとしています。
以下のプログラムではnを入力すると出力はされますが
負の値がでるまで繰り返しnumber=が表示されません。
どのように変更すればよいかご存じの方ご教示お願い致します。
C言語コード #include<stdio.h> double fact(int n); int main(){ int number; double n; int k; while(1){ printf("number="); scanf("%d",&n); if(n<0) break; k = k + 1.0/fact(n);} printf("e=%f\n",k); } return 0; } double fact(int n){ n=1; int i; for(i=1;i<=n;i++){ n = n*i; }
main()の{}の数があっていませんし、fact()は途中で途切れています。
実際にコンパイルしたコードを貼ってください。
kは不定値のまま使用されています。
上↑のコード、インデントも付けないで、自分でも見にくくないですか?
・・・ちゃんとインデント付けましょう。
fact()のnって何に使ってます?・・・デバッグしましょう・・・
おそらく、「本当にやりたいこと」と「書きたいと考えているコード」と「実際に書いているコード」がすべて食い違っています。
「キー入力した値 N から 0 までの 1/n! を加算して、自然対数の底 e の近似値を求める」ということが、「本当にやりたいこと」なのでは?
こめんとありがとうございます。おっしゃる通りです。すいません。
回答2件
あなたの回答
tips
プレビュー