海外旅行から帰ってきたら、まず何を食べる?

C言語の勉強をしていて、for文と戻り値を使った階乗について分からずに困っています。

以下の点に留意して、階乗を計算するプログラムを作成する。
階乗とは、数字を1つづつ減らしながら掛け合わせたものです。つまり
5の階乗:5×4×3×2×1=120
3の階乗:3×2×1=6
となります。
main内
1)整数型の変数kazu、kekkaを宣言する。
2)“階乗を計算します。”を表示する。
3)実行例と同様の表示になるように、“整数を入力してください”を表示し、入力された値を、変数kazuに読み込む。
4)作成する関数名は、kaijyoとし、kazuを引数とし、戻り値をkekka に代入する。
6)“○の階乗は ○です。”と表示する。

関数kaijyo内
1)引数を変数名xとする。
2)整数型の変数i、valを宣言する。
3)計算結果をvalに入れていくために、valを初期化する(下記注意参照)。
4)iをカウンターとするfor文と複合代入演算子を使って階乗を計算する。
5)valの内容が戻り値となるようにする。
注意:階乗を計算するために、for文の中で複合代入演算子を使って階乗を計算します。しかし、for文に入る前のvalの初期化には注意が必要です。0に何を何回かけても0だと言うことを思い出してください。

という問題です。

それで私は下の通りに作りました。



#include <stdio.h>

int kaijyo(int x);

void main(void)
{
int kazu,kekka,kaijyo,sum;


printf("階乗を計算します。\n");
printf("整数を入力してください");
scanf("%d",&kazu);
kekka=kaijyo(kazu);
printf("%dの階乗は%dです。",kazu,kekka);

}

int kaijyo(int x)
{
int i,val;
val=1;
x=1;

for(i=1;i<=val;i++){
x=x*i;
}
return val;
}

しかし、メイクして実行してもどの階乗でも256になってしまいます。
どこが間違っているのか分からずに困っています。
よかったら教えてください。
よろしくお願いします。
カテゴリを間違ってしまっていたらすみません。

A 回答 (1件)

関数kaijyouの中の階乗計算における引数の設定が無茶苦茶になっています。


もう一度良く見直して見て下さい。
ヒント:この関数だと仮引数の意味が・・・
    • good
    • 0
この回答へのお礼

的確な回答をありがとうございました。
ゆっくり見直してみたら解けました。
回答していただきありがとうございました。

お礼日時:2010/10/18 18:08

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


おすすめ情報