こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

初心者なのでわけが分かりません^^;

大学に入って初めてプログラミングを習いましたが、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

投稿日時 - 2005-04-21 21:08:46

QNo.1344451

困ってます

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

main関数の終わりの}がありません。

投稿日時 - 2005-04-21 21:34:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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未満の場合の処理も追加しておく事をお勧めします。

投稿日時 - 2005-04-22 09:22:24

ANo.1

int GetKaijyo(int);

これでどうですか。

投稿日時 - 2005-04-21 21:33:29

あなたにオススメの質問