C言語のきほん「数当てゲーム 」回答履歴を保存

スポンサーリンク
C言語

プレーヤーが回答した値を保存しておけば、回答した様子を後から確認できる。

さっそくプログラムをご紹介しよう。

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

//数当てゲーム 回答履歴を表示

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_STAGE   10  //最大回答回数

int main(void)
{
    int i;
    int stage;  //回答した回数
    int no;     //読み込んだ値
    int ans;    //正解
    int num[MAX_STAGE]; //読み込んだ値の履歴
   
    srand(time(NULL));	//乱数のためを設定
    ans = rand() % 100;	//0~99の乱数を生成

      printf("0から99までの整数を当ててください!\n");
    
    stage = 0;
    do
    {
       printf("残りは%d回。いくつでしょう:",MAX_STAGE - stage);
       scanf("%d",&no);
       num[stage++] = no;	//読み込んだ値を配列に格納

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

    } while (no != ans && stage < MAX_STAGE);

    if (no != ans)
	printf("残念。正解は%dでした",ans);
    else{
    
         printf("正解です\n");
         printf("%d回で当たりました。\n",stage);
     }

     puts("\n--回答履歴--");
     for ( i = 0; i < stage; i++)
      printf("%2d : %4d %+4d\n",i + 1,num[i],num[i] - ans);
     

    return 0;
}

実行結果

0から99までの整数を当ててください!
残りは10回。いくつでしょう:48
もっと小さいです。
残りは9回。いくつでしょう:34
もっと大きいです。
残りは8回。いくつでしょう:40
もっと小さいです。
残りは7回。いくつでしょう:38
正解です
4回で当たりました。

--回答履歴--
 1 :   48  +10
 2 :   34   -4
 3 :   40   +2
 4 :   38   +0

本プログラムでは、回答した値の格納先に配列を利用している。

また、for文で回答履歴を表示している。

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

コメント

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