- ベストアンサー
初心者なのでわけが分かりません^^;
大学に入って初めてプログラミングを習いましたが、2回目の授業ではやくも関数のプログラムの宿題が出されました。 問題は「5の階乗を求めて、表示させるプログラムを作りなさい」というものなのですが、一応教科書にのっとって、作ってみましたが、コンパイルエラーがすごく多くでてしまいます。解決策が見つからないので質問することにしました。 以下が私が作ったプログラムです。 ---------------------------------------------- #include<stdio.h> int GetKaijyo(int, int); /*-------------------main関数------------------*/ void main(void) { int number; int kekka; number = 5; kekka = GetKaijyo(number); printf("%d no kaijyo = %d\n", number, kekka); /*--------------GetKaijyoの本体----------------*/ int GetKaijyo(int x) { int z; if(x == 1) return(1); z = x * GetKaijyo(x - 1); return(z); } ---------------------------------------------- 慣れた人から見たら馬鹿馬鹿しい質問だとは思いますが、どこが間違っているかも分からないので、ご指摘お願いします。m(_ _)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
main関数の終わりの}がありません。
その他の回答 (2)
- koutarou504
- ベストアンサー率44% (182/407)
int GetKaijyo(int, int); という記述とmain関数の終わりがない事がエラーだと思いますが・・・。 調べ方としてそれぞれの行を消すかその行だけにするかして、 検証用ソースを作る事をお勧めします。 例えば、ここではmain関数とGetKaijyo関数の2つの関数がある訳ですから、どちらの関数に問題があるかまず絞ると。 #include<stdio.h> void main(void) { int number; int kekka; number = 5; kekka = 5 * 4 * 3 * 2 * 1; printf("%d no kaijyo = %d\n", number, kekka); 以上だけの記述で、エラーもなく望む結果が得られればmain関数には問題なしと。 (たぶんエラーとなるので、下から1行づつ消していって確認すれば、最後までエラーが出続け、記述ミスでなく何かが足りないのであると絞れます。) 同じ様にmain関数を簡素化してエラーをなくしてからGetKaijyo関数の検証を。 それから蛇足で、GetKaijyo関数に引数が1未満の場合の処理も追加しておく事をお勧めします。
- iiikkk
- ベストアンサー率37% (92/247)
int GetKaijyo(int); これでどうですか。