1989年開業 情報工学部門 文部科学省登録番号 第22082号 公益社団法人日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム 早打ち2進数ゲーム

●ランダムに表示される2進数を、10進数で入力するゲームです。
●ゲームの開始時刻と終了時刻から、タイムを計ります。
●開始時刻は、乱数の種として利用します。
●正しい答が入力されると、次の2進数を発生し表示します。
 ≫ソースファイルのダウンロード: binary04-1.c

【問題】
●表示される数の最大と最小は何か。10進数で答えなさい。
●関数 fflush( ) の働きは何か。
●2進数の1の位は、配列 c の何番目の要素に格納されるか。

【発展問題】
●間違えた回数をカウントするように改造してみよう。
●早打ち16進数ゲームに改造してみよう。

/**********************/
/* 早打ち2進数ゲーム */
/**********************/
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <windows.h>

void  main( )
{
    char  c[128];
    int   n,b,m;                               // 表示数字,答え
    int   tS,tE;                               // 開始,終了時刻
    int   i,j;

    system("cls");                             // 画面消去
    printf("\n***早打ち2進数ゲーム(10回戦)***\n");
    printf("\n表示される2進数を10進数で入力してください\n");
    printf("\n何かキーを押すと始まります\n");

    getche( );                                 // 1文字入力

    printf("\nスタート!!\n");

    tS=time(NULL);                             // 現在の時刻
    srand(tS);                                 // 乱数の準備

    for( i=0; i<10; i++ )                      // 10回繰り返す
      {
        n=rand( )%16+1;                        // 乱数発生

        printf("\n");                          // 画面改行
        for( j=0,b=n; b>0; j++,b/=2 )
          { c[j]=b%2; }   		               // 2進数を1桁計算
        for( j--; j>=0; j-- )                  // 最後の桁から表示
          { printf("%c",c[j]+'0'); }           // 2進数を1文字表示

        while ( 1 )
          {
            printf(" : "); fflush(stdout);
            gets(c); m=atoi(c);                // 答を入力し数値に変換

            if ( m==n ) break;                 // 正解

            Beep(100,200);
          }
      }

    tE=time(NULL);                             // 現在の時刻
    Beep(800,300);
    printf("\n\nタイムは %d秒でした\n",tE-tS);
}
   

※SSL暗号化通信対応

佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: info@saeki-pe.com