【C言語】0が入力されたらループ処理を終了するプログラムの書き方を解説

今回は、「0が入力されたら終了するプログラム」を作成していきます。

このプログラムは、ユーザーが0を入力するまで繰り返し数字の入力を求めるものです。

今回のプログラムの開発で使用する構文・関数を順番に解説し、最後に0が入力されたら終了するプログラムの書き方をC言語初心者でも理解しやすいように、詳しく解説していきます。

目次

標準入力から値を受け取る方法

プログラムの実行中に、ユーザーがキーボードから入力した値をプログラム内で扱うことができます。

このような入力処理を「標準入力」と呼びます。C言語では、標準入力から値を受け取るためにscanf関数が用意されています。

scanf関数とは何か

scanf関数は、指定された書式に従って標準入力からデータを読み込むための関数です。

具体的には、変換指定子(%dや%sなど)を使って読み込むデータの型や形式を指定し、その結果得られた値を変数に代入します。

scanf関数の使い方

以下はscanf関数の基本的な使い方です。

#include <stdio.h>

int main() {
    int num;
    printf("整数値を入力してください: ");
    scanf("%d", &num);
    printf("あなたが入力した整数値は%dです。\n", num);
    return 0;
}

上記コードでは、「整数値を入力してください: 」というメッセージが表示され、ユーザーがキーボードから整数値(例えば123) を打ち込むと、その数字がnum変数に格納されます。

そして「あなたが入力した整数値は123です。」というメッセージも表示されます。

注意点としては、「&」演算子で変換対象の変数名(&num) を渡す必要性があります。

数値だけでなく文字列入力なども可能です。

#include <stdio.h>

int main() {
    char name[20];
    int age;

    printf("名前:");
    scanf("%s", name);

    printf("年齢:");
    scanf("%d", &age);

   printf("\n私の名前は%sです。\n年齢は%d歳です。\n", name, age);
    
   return 0;
}

上記コードでは、名前と年齢をそれぞれ入力、name変数およびage変数それぞれ格納し、最後 のprintf文で出力しています。

条件分岐文if文について

プログラムを作成する上で、条件分岐は非常に重要な概念です。条件分岐とは、ある条件が満たされた場合にのみ特定の処理を行うことができる制御構造です。C言語では、if文を使って条件分岐を実現します。

if文とは何か

if文は、「もし○○だったら△△する」というような形式で書かれます。具体的には、以下のような構造を持ちます。

if (条件式) {
    // 条件式が真(true)だった場合に実行される処理
}

このように、括弧内の「条件式」が真(true)であれば中括弧内の処理が実行されます。逆に偽(false)であればスキップされます。

if文の書き方

次に、if文の書き方を見ていきましょう。

if (a > b) {
    printf("a is greater than b\n");
}

この例では、「a > b」という比較演算子を用いて「a が b より大きければ ‘a is greater than b’ を出力する」という意味です。また、「else」や「else if」なども組み合わせることで複雑な判断も可能です。

int a = 10;
int b = 5;

if (a > b) {
    printf("a is greater than b\n");
} else if (b > a) {
    printf("b is greater than a\n");
} else {
    printf("a and b are equal\n");
}

この例では、「else if」や「else」ブロックも含めて3つ以上の選択肢から1つ選ぶことが出来ます。「else」ブロックは省略可能です。

無限ループ処理while文について

while文とは何か

while文は、指定した条件が真である間、繰り返し処理を行うための制御構造です。

while (条件式) {
    // 条件式が真である場合に実行される処理
}

while文で無限ループ処理を行う方法

while文では、条件式が常に真となるような書き方をすることで無限ループ処理を実現することが出来ます。以下は0以外の整数値が入力された場合にその値を表示し、0が入力されたら終了するプログラム例です。

#include <stdio.h>

int main() {
    int num;
    
    while(1) {  // 無限ループ処理開始
        printf("整数値を入力してください:");
        scanf("%d", &num);
        
        if(num == 0) {  // 入力値が0だった場合はbreakして無限ループから抜ける。
            break;
        }
        
        printf("入力された値:%d\n", num);
    }
    
    return 0;
}

ここまでに紹介した、

  • scanf関数
  • if文
  • while文

これらを組み合わせることで、0が入力されるまで値を入力し、値を保存し続けるプログラムを書くことができます。

実際にコードを書く手順

実際にコードを書く手順は以下の通りです。

コード全体の流れ

  1. 変数宣言部分で、入力された値を格納する変数を定義します。
  2. 無限ループ処理部分で、ユーザーからの入力待ち状態になります。
  3. 入力された値が0だった場合、break文で無限ループ処理から抜け出しプログラム終了となります。

変数宣言部分

まず最初に、入力された値を格納する変数を定義します。今回は整数型(int)の変数numとしています。

int num;

無限ループ処理部分

次に無限ループ処理部分です。while文を使って、常にユーザーからの入力待ち状態となるようにします。またscanf関数でキーボードから数字を受け取り、num変数に代入しています。

while(1){
    printf("数字を入力してください:");
    scanf("%d", &num);
}

入力された値が0だった場合、breakしてプログラム終了

最後にif文とbreak文で、「もしnumが0だったら」プログラム終了させるよう記述します。

「もしnumが0だったら」という条件式はif(num == 0)と表現することが出来ます。

while(1){
    printf("数字を入力してください:");
    scanf("%d", &num);

    if(num == 0){
        break;
    }
}

サンプルコード解説

以下に、先程の手順で作成したサンプルコードを解説します。

#include <stdio.h>

int main() {
    int num;

    while (1) {
        printf("整数を入力してください(0で終了):");
        scanf("%d", &num);

        if (num == 0) {
            break;
        }

        printf("入力された値は%dです。\n", num);
    }

    return 0;
}

まずはじめに、変数numが宣言されています。

その後、無限ループ処理が始まります。条件式として常に真(1)を指定し、ブロック内の処理を繰り返します。

ブロック内では、「整数を入力してください(0で終了):」というメッセージが表示されます。

そして、ユーザーからの入力値を変数numに格納するためにscanf関数が呼び出されます。

次にif文が登場します。「if(num == 0){…}」は、「もしも変数numの値が0だったら{…}内部の処理を実行せよ」という意味です。

この場合、break文によって無限ループから抜けるよう命令されています。

つまり、ユーザーから受け取った値(num) が「0」だった時点でwhile文から脱出し、プログラム自体も終了させることができます。

入力された値が0以外だった場合は、printf関数で「入力された値は〇〇です」と表示し、ループの最初に戻ります。

これが、「0が入力されるまで値の入力を受け付け、入力された値を出力し続けるプログラム」です。

まとめ

今回は、C言語を使って0が入力されたら終了するプログラムの作成方法について解説しました。

標準入力から値を受け取る方法や条件分岐文if文、無限ループ処理while文など基本的なプログラミングの要素を使用して、簡単なプログラムを作成しました。

また、実際にコードを書く手順やサンプルコード解説も行いました。

これらの情報を参考にして、C言語で自分だけのプログラムを作成することができるようになりましょう!

目次