
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になってしまいます。
どこが間違っているのか分からずに困っています。
よかったら教えてください。
よろしくお願いします。
カテゴリを間違ってしまっていたらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
論理演算子.NOT.の使い方
-
バッチファイルでウインドウを...
-
パソコン
-
正しい五十音順について
-
あるプログラムのコマンドライ...
-
プログラミングについて。
-
ドロップダウンリストの文字を...
-
Bluestacks内でダウンロードし...
-
ニュートン法で解が収束しない
-
Excelで4096点以上のFFTの方法
-
C++でアボート(Abort)で処理が...
-
変数の値が勝手に変化する原因
-
OS入ってる機器のソフト・アプ...
-
C言語 バッファについて。
-
プログラミングをしたいのです...
-
インテル マネジメント エンジ...
-
COBOLのピリオド
-
Delphiの逆コンパイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
VBAで関数をつくる
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
C言語についての質問です。 ル...
-
切り上げたい
-
DLL(VC++で作った)で稼動中の...
-
CとFORTRANの計算速度はどちら...
-
趣味で「乗換案内」みたいなソ...
-
CGIの実行権限(ディスク容...
-
エクセルで特定のセルのみを任...
-
functionを含んだプログラムを...
-
時間差を求める
おすすめ情報