質問: C言語初心者です.セグメントエラーで前に進めません... nを入力したらフィボナッチ数列F(n)を返してくれるようなプログラム目指して作ってみたのですがセグメントエラーがでて正しく計算できません.どこが悪いので
回答: /* 2018/2/19 02:18:49 chissoraさん C言語初心者です.セグメントエラーで前に進めません... nを入力したらフィボナッチ数列F(n)を返してくれるようなプログラム 目指して作ってみたのですが セグメントエラーがでて正しく計算できません. どこが悪いのでしょうか. > gcc -o 001 001.c > ./001 何項目かを入力 3 セグメントエラー */ // Visual C++ 2013 #define _CRT_SECURE_NO_WARNINGS // microsoft の場合必要 #include int main(void) { int i,n,m,a=1,b=1; printf("何項目かを入力\n"); fflush(0); /*バッファにためている分を出力*/ scanf("%d",&n); // 説明:************************************************* // scanf("%d\n", n); // 受け入れる変数nは、引数でそのアドレス &n を渡す // nを渡したので、そのときnに入っていた値(トンデモナイ値) // をnのアドレスとおもってコンパイルし、セグメントエラー // を起こしたのです。&n とすれば nのアドレスをあらわしてくれ、 // 末尾の結果になります。 // 尚、%dの次の\nは不要です。 // ******************************************************* if (n==1) printf("%d\n", a); else if (n==2) printf("%d\n", b); else { m = ( n - 1 ) / 2; for (i = 1; i<=m; i++){ a = a + b; b = a + b; } if (n % 2 == 1) printf("%d\n", a); if (n % 2 == 0) printf("%d\n", b); } return 0; } /* STDOUT: 何項目かを入力 3 2 続行するには何かキーを押してください . . . */