C言語のきほん「数当てゲーム(while文)」

スポンサーリンク
C言語

前回は、do文を使った「数当てゲーム」のプログラムをご紹介した。

今回は、do文と対照的に前判定繰返しを行うwhile文を使ってこのプログラムを書き換えてみよう。

なお、本プログラムは、
 Windows 11 Home(23H2)上で、  Visual Studio Code(1.92.2)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で  コンパイルしている。

//数当てゲーム(while文)

#include <stdio.h>

int main(void)
{
    int no;         //読み込んだ値
    int ans = 8;    //正解

    printf("0から9の整数を当ててください\n");
    while (1)
    {
        printf("いくつでしょうか:");
        scanf("%d",&no);

        if(no > ans)
            printf("もっと小さいです。\n");
        else if (no < ans)
            printf("もっと大きいです。\n");
        else
            break;

    }

    printf("正解です。\n");

  return 0;
    
}

実行結果

0から9の整数を当ててください
いくつでしょうか:6
もっと大きいです。
いくつでしょうか:9
もっと小さいです。
いくつでしょうか:8
正解です。

while文
while (式) 文

制御式である式を評価した値が0でない限り、ループ本体である文が何度も実行される。

本プログラムはのwhile文の制御式は1なので、繰返しは永遠に続くことになる。(無限ループ)

そこで、繰返し文を強制的に抜け出すために、本プログラムで使っているのが、break文である。

noとansが等しいとき、break文が実行され、while文による繰り返しが強制的に中断される。

なお、break文を使うと、プログラムが読みにくくなる傾向がある。「ある特別な条件が成立したとき、何らかの事情で繰返し文を強制的に終了したい」というような状況でのみ利用すべきだろう。

参考)新・明解C言語 中級編 柴田 望洋(著)

コメント

タイトルとURLをコピーしました