- 締切済み
C言語の課題なんですが、わかりません。
問題は、for文を使って10の階乗を計算し、実行結果が10の階乗は3628800です。 誰か解りましたら教えて下さい。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- C言語について質問です。
C言語について質問です。 問題:繰り返し命令と階乗の計算 カウンタ用変数nの値を1から10まで1ずつ変化させて、その値を階乗用変数Kiに順次、掛け算していき、10の階乗を求めよ。 ki=1×2×3×4×5×6・・・・・×9×10 <==10! また、1/n!は小数点以下10桁まで求めよ。 実行結果は n n! 1/n! 1 1 1、0000000000 2 2 0、5000000000 3 6 0、1666666667 4 24 0、0416666667 5 120 0、0083333333 6 720 0、0013888889 7 5040 0、0001984127 8 40320 0、0000248016 9 362880 0、0000027557 10 3628800 0、0000002756 続行するには何かキーを押してください、、、、、、 上のように実行結果が出るようにプログラミングしたいのですがわからないので 分かる方よろしくお願いします。 ちなみに今まで習ってきたのは、if文、switch文、do文、while文、for文なんですがこのプログラミングは、for文でおねがいします。 長文失礼しました。
- 締切済み
- 高校
- C言語の勉強をしていて、for文と戻り値を使った階乗について分からずに
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になってしまいます。 どこが間違っているのか分からずに困っています。 よかったら教えてください。 よろしくお願いします。 カテゴリを間違ってしまっていたらすみません。
- ベストアンサー
- その他(学問・教育)
- C言語の課題について。教えてください
次のプログラムに3重ループ(for)を使ってプログラムを作成したい。 コンパイルの実行結果から考えて、(1)(2)(3)の中に適切な数値や式等をいれよ。 #include<stdio.h> main() { int a,b,c; for(a=1;a<=3;a++){ (1) for(b=1;b<=2;b++){ (2) for(c=1;c<=3;k++){ (3) } コンパイルした後の実行画面 abbc c c d abbc c c d abbc c c d 解答欄 (1) (2) (3)
- 締切済み
- C・C++・C#
- プログラムについて(C言語)
#include<stdio.h> int main() { int i,n,total; for(;;){ /* 無限ループ*/ printf("整数n?"); /* nの値の表示 */ scanf("%d",&n); /* ifとbreakを使った終了判定 */ if(n<0)break; total=1; for(i=1;i<=n;i++){ printf("i=%d ",i); total*=i; /* total←total*i(階乗の計算) */ } printf("total=%d\n",total); /* totalの値(結果)の表示 */ } printf("Thanks\n"); /* 終了メッセージの表示 */ return(0); } これは階乗を求めるプログラムなのですが、i++ではなくi--をつかって求める場合 どのように変更すればよいでしょうか? for(i=1;i<=n;i++){ あたりをいろいろ弄ってみたのですが、求めてる結果は得られませんでした
- ベストアンサー
- C・C++・C#
- C言語の課題について
設問内容として「適当な正整数を読み込んで、12,98,5,34,119,77,26,3の8個の整数の中から、最も近い数を探しましょう。」という問題で,自分でやってみたプロクラミングなのですが、 /*kadai2*/ #include <stdio.h> main(){ int x,input,min,mB,a[]={12,98,5,119,34,77,26,3},b[8]; for(x=1;x<8;x++){ b[x]=a[x]-input;} if(x<b[x]){b[x]=-b[x];} for(x=1;x<8;x++){if( min>b[x] ){ min=b[x]; mB=x;} } printf("%d",a[mB],b[x]); } 上記は自分が考えたプログラミングです。あとこの問題から正しいプログラムを実行した場合例として31を入力した時に 「$./a.exe 適当な正整数を入れてね?31 31に最も近い数は4番目の数34です。」 という結果になるようです。 この設問のプログラミングがわかる人はできるだけ早急に教えてくださいよろしくお願いします。
- 締切済み
- C・C++・C#
- C言語の課題で助けてください2
以前に質問をしたものです。 C言語の課題で毎年10万円ずつ貯金した時、年利が1年複利で1%の場合で 10年たつと貯金残高はいくらになるかという課題です。 ヒント:ループ(for文)、残高変数はdoubleを利用する。 答え:10年後には1056683.466653 となるようです。 というものなのですが、自分なりに試行錯誤してみたのですが答えが合いませんでした。どうか、よろしくお願いします。 みなさんのご指摘通りに自分なりに頑張ってみたものをアップします。 一年目だけは計算が合うのですが、2年目からおかしくなってしまいます。考えてみたのですがアルゴリズムが上手く作れません。 どうか、添削お願いいたします。 #include<stdio.h> int main(void) { int year; double nenri; double zandaka; double total; zandaka=100000; nenri= 0; total=0; for (year=1;year<=10;year++){ nenri = zandaka*0.01; total +=zandaka + nenri; } printf("貯金残高は %f 円です\n",total); return 0; }
- ベストアンサー
- C・C++・C#
- 再帰について(C言語)
今、再帰処理を勉強しています。 しかし、以下のプログラムがどうしても理解できません。 流れ的には一体どういう手順になっているのでしょうか? return i * fact( i - 1 )の部分を考えると頭が こんがらがってしまいます。 #include <stdio.h> int main( void ){ printf("5の階乗は %d です", fact(5) ); return 0; } int fact( int i ){ if( i == 1 ) return 1; else return i * fact( i - 1 ); } --------実行結果---------- 5の階乗は 120 です
- ベストアンサー
- C・C++・C#
- C言語の課題で助けてください
C言語の課題で毎年10万円ずつ貯金した時、年利が1年複利で1%の場合で 10年たつと貯金残高はいくらになるかという課題です。 ヒント:ループ(for文)、残高変数はdoubleを利用する。 答え:10年後には1056683.466653 となるようです。 というものなのですが、自分なりに試行錯誤してみたのですが答えが合いませんでした。どうか、よろしくお願いします。
- 締切済み
- C・C++・C#