C: 1を求める! + 2! + 3! + ... + n! (ループ)
2022-02-20 12:37:46
問題を解く
C言語ではforループを使用し、1! + 2! + 3! + ... + n!
コードの実装
# include <stdio.h>
int main(void)
{
int n = 0;
int i = 0;
int m = 1;
int sum = 0;
printf("Please enter the value of n:");
scanf("%d", &n);
for (i=1; i<=n; ++i)
{
m = m * i;
sum = sum +m;
}
printf ("sum = %d\n", sum);
return 0;
}
ナレッジポイント分解
このプログラムは短いですが、論理的でアルゴリズム的なので、読者は覚えておくことをお勧めします。論理的であるが故に、見ただけでは理解しにくい。自分で紙に書いて、コンピュータになったつもりで一歩一歩計算してみてください。
n=4の場合。
- i=1、m=1、sum=1 のとき。
- i=2のとき、m=1×2、sum=1+1×2。
- i=3のとき、m=1×2×3、sum=1+1×2+1×2×3。
- i=4のとき、m=1×2×3×4、sum=1+1×2+1×2×3+1×2×3×4。
このパターンを見てください。mの値はずっと掛け算で、iを掛ける前のmの値は(i-1)の階乗、iを掛けた後のmの値はiの階乗です。ですから、iがループする数だけ、m*iはすぐにその数の階乗を計算し、sumに足し算するのです。
関連
-
C 構造体定義エラー: '['トークンの前に一次式があることが予想される
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
構造体の配列--[エラー] '['トークンの前に一次式があることが予想される
-
[C] レポートエラー 代入の左オペランドとしてlvalueが必要
-
Cエラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
赤線の位置は必ずしも間違っていない:式は変更可能なlvalueでなければならないエラーは、この文とは別の場所に存在する可能性があります。
-
ポインタ定数および定数ポインタ
-
C/C++の再定義
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
エラー: 宣言されていない識別子 'bool' の使用と C コンパイラでの問題点
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
_CRT_SECURE_NO_WARNINGS エラーメッセージ、解決方法
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
VSCodeでCプログラムを書くとエラーになる:ソースファイル "stdio.h" を開くことができない
-
C++の配列コピー
-
Solve Dev-c++ [エラー] 'for' ループの初期宣言は、C99 または C11 モードでのみ許可されます。
-
関数 'malloc' の暗黙の宣言に対する解決策
-
未定義の `__isoc99_sscanf' への参照
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化