アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

int GetKaijyo(int);



これでどうですか。
    • good
    • 0

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

    • good
    • 0

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!