初心者でも理解できる!C言語で階乗を計算するたった5つのステップ

C言語で階乗を計算するプログラムの作成手順 C言語
この記事は約6分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

皆さんはプログラミング初心者で、C言語で階乗を計算する方法について知りたいと思いますよね。

これからC言語を用いて、階乗を計算するプログラムを作る方法を詳しく解説していきます。

手順とサンプルコードを交えながら、一緒に学んでいきましょう。

●C言語とは

C言語は、1970年代に開発された高級プログラミング言語です。

そのシンプルさと効率の良さから、オペレーティングシステムや組み込みシステムの開発など、幅広い用途に利用されています。

●階乗とは

階乗とは、1からある自然数までのすべての整数の積のことを指します。例えば5の階乗は12345で120になります。

プログラミングでよく使われる概念であり、C言語で表現するとさらに理解が深まります。

●C言語で階乗を計算するプログラムの作り方

○環境設定

C言語を書くための環境がまず必要です。

WindowsではCode::BlocksやVisual Studioなどが、MacではXcodeが便利です。

これらのIDE(Integrated Development Environment:統合開発環境)をインストールし、新しいプロジェクトを作成してください。

○基本構造の理解

C言語のプログラムは、次のような基本構造で書かれます。

#include <stdio.h>

int main() {
    // プログラムの内容
    return 0;
}

このコードでは、#include <stdio.h>で標準入出力ライブラリを読み込んでいます。

そしてint main()がプログラムのメイン部分で、ここに処理を書いていきます。

最後のreturn 0;はプログラムが正常に終了したことを示すものです。

○階乗を計算するアルゴリズム

階乗の計算は、forループを使って効率的に行うことができます。

1から指定した数までを順に掛け合わせていくことで、その数の階乗を得ることができます。

○サンプルコード1:階乗を計算するプログラム

それでは、5の階乗を計算するサンプルコードを紹介します。

この例ではforループを使って、1から5までの数字を順に掛けています。

#include <stdio.h>

int main() {
    int i, num = 5, factorial = 1;

    for(i = 1; i <= num; i++) {
        factorial *= i;
    }

    printf("%dの階乗は%dです\n", num, factorial);

    return 0;
}

このコードを実行すると、「5の階乗は120です」という結果が出力されます。numの値を変えることで任意の数の階乗を計算することができます。

○サンプルコード2:ユーザーからの入力を受け取るプログラム

次に、ユーザーからの入力を受け取って階乗を計算するサンプルコードを紹介します。

この例ではscanf関数を使って、ユーザーの入力を受け取っています。

#include <stdio.h>

int main() {
    int i, num, factorial = 1;

    printf("階乗を計算する数を入力してください:");
    scanf("%d", &num);

    for(i = 1; i <= num; i++) {
        factorial *= i;
    }

    printf("%dの階乗は%dです\n", num, factorial);

    return 0;
}

このコードを実行すると、「階乗を計算する数を入力してください:」と表示され、ユーザーが数値を入力することでその数の階乗が計算されます。

●C言語で階乗を計算するプログラムの応用例

○サンプルコード3:組み合わせを計算するプログラム

階乗を計算するプログラムは、組み合わせや順列を計算するのにも応用することができます。

nCr(n個からr個を選ぶ組み合わせ)を計算するプログラムを紹介します。

#include <stdio.h>

int factorial(int num) {
    int i, fact = 1;

    for(i = 1; i <= num; i++) {
        fact *= i;
    }

    return fact;
}

int main() {
    int n, r;
    printf("nとrを入力してください:");
    scanf("%d%d", &n, &r);

    int combination = factorial(n) / (factorial(r) * factorial(n - r));

    printf("組み合わせは%dです\n", combination);

    return 0;
}

このコードではまず、階乗を計算するための関数factorialを定義しています。

そしてmain関数でユーザーからnとrの入力を受け取り、組み合わせの数を計算しています。

○サンプルコード4:順列を計算するプログラム

同様に、nPr(n個からr個を選ぶ順列)を計算するプログラムも紹介します。

#include <stdio.h>

int factorial(int num) {
    int i, fact = 1;

    for(i = 1; i <= num; i++) {
        fact *= i;
    }

    return fact;
}

int main() {
    int n, r;
    printf("nとrを入力してください:");
    scanf("%d%d", &n, &r);

    int permutation = factorial(n) / factorial(n - r);

    printf("順列は%dです\n", permutation);

    return 0;
}

このコードも組み合わせの計算と同様に、まず階乗を計算する関数を定義し、その後でユーザーからの入力を受け取って順列を計算しています。

●注意点と対処法

C言語で階乗を計算する際の注意点としては、計算結果がint型の範囲を超えないようにすることです。

大きな数の階乗を計算しようとするとオーバーフローが起こる可能性があります。

そういった場合には、適切なデータ型を選択するか、あるいは適切な範囲の数値のみを計算対象にすることが重要です。

また、ユーザーからの入力を受け取る際には、入力が適切な範囲の数値であることを確認するエラーチェックを入れると、より堅牢なプログラムになります。

まとめ

C言語で階乗を計算するプログラムを作る方法を詳しく解説しました。

これらの手順とサンプルコードを参考にして、自分で階乗を計算するプログラムを書いてみてください。

そして、階乗の計算は、組み合わせや順列など、さまざまな計算に応用できるので、その応用例にも挑戦してみてください。

プログラミングの学習は、手を動かしながら試行錯誤することが大切です。

これからもC言語の学習を頑張ってください。