C言語に基づいてデジタルゲームを当てます。
前言
システムは【1,100】の間の数字を生成して、ユーザーが勝手に一つの整数を入力して、もしユーザーが入力した数字がシステムが生成した数字より小さいなら、「低く当てました」とヒントを与えます。もしユーザが入力した数字がシステムが生成した数字より大きいなら、推測が高くなります。
一、先生は【1、100】のランダム整数になります。
C言語の標準ライブラリにはすでに多くの既成の機能が含まれています。ランダムな整数を生成して、cplus文書を確認できます。ブラウザからwww.cplusplus.comを入力します。cstdlibこれはC++スタイルの書き方です。stdlib.hはC言語スタイルの書き方です。C++はstdlib.h.C.C.C言語の関数パラメータがない場合、直接()を書いてもいいです。書いてもいいですが、戻り値はvoidを無視してはいけません。古いコンパイラはVC 6のように、函数の戻り値も無視できます。
上記の文章から分かるように、我々は【1,100】のランダム整数を生成します。
注意:ここでは、Landという関数は今後、作業中に慎重に使用してください。マルチスレッド、rand関数スレッドは安全ではなく、実際に開発中に乱数に対して要求が厳しくないなら、多くの中でランドに代わる方案が実現できます。例えば、ある変数のアドレスを使って代替することができます。
二、ユーザーに対話を促す
ユーザーと対話するメニューを追加します。コードは以下の通りです
疑似乱数は、あるアルゴリズムによってランダムな値を得ることであり、真のランダムではない。
真の乱数は物理実験に伴っています。例えば、コイン投げ、サイコロ投げ、電子部品の騒音、核分裂など、彼の結果は三つの特性に合っています。は、実際の乱数です。
私たちはrandでプログラムを実行すると、毎回実行する乱数は同じであることが分かります。これは疑似乱数です。では、どうやって本物の乱数を生成しますか?プログラムを実行するたびにランダムなフィードを設定すればいいです。時間と時間は永遠に変化しています。コンピュータで時間を表しているのは、整数で表されているタイムスタンプというものです。タイムスタンプは1970年1月1日0時0分0秒を基準として、現在時刻と基準時刻の秒数の差を計算します。
タイムスタンプ(0)を取得するには、ヘッダファイルtime.hを含む必要があります。time関数の戻りタイプはtime-tといい、timeは本質的にunsigned long longです。したがって、強制的なタイプ変換が必要になります。time-t結果を強制的にunsigned intに変換します。データがなくなるかもしれません。この警告をコンパイラに提示する必要がないようにするためです。
srand((unsigned int)time(0))
四、全体のプログラム実現
システムは【1,100】の間の数字を生成して、ユーザーが勝手に一つの整数を入力して、もしユーザーが入力した数字がシステムが生成した数字より小さいなら、「低く当てました」とヒントを与えます。もしユーザが入力した数字がシステムが生成した数字より大きいなら、推測が高くなります。
一、先生は【1、100】のランダム整数になります。
C言語の標準ライブラリにはすでに多くの既成の機能が含まれています。ランダムな整数を生成して、cplus文書を確認できます。ブラウザからwww.cplusplus.comを入力します。cstdlibこれはC++スタイルの書き方です。stdlib.hはC言語スタイルの書き方です。C++はstdlib.h.C.C.C言語の関数パラメータがない場合、直接()を書いてもいいです。書いてもいいですが、戻り値はvoidを無視してはいけません。古いコンパイラはVC 6のように、函数の戻り値も無視できます。
上記の文章から分かるように、我々は【1,100】のランダム整数を生成します。
注意:ここでは、Landという関数は今後、作業中に慎重に使用してください。マルチスレッド、rand関数スレッドは安全ではなく、実際に開発中に乱数に対して要求が厳しくないなら、多くの中でランドに代わる方案が実現できます。例えば、ある変数のアドレスを使って代替することができます。
二、ユーザーに対話を促す
ユーザーと対話するメニューを追加します。コードは以下の通りです
int menu()
{
printf("*********************
");
printf(" !
");
printf("1.
");
printf("2.
");
printf("
");
printf("*********************
");
int choice = 0;
scanf("%d", &choice);
return choice;
}
三、疑似ランダムと真ランダム疑似乱数は、あるアルゴリズムによってランダムな値を得ることであり、真のランダムではない。
真の乱数は物理実験に伴っています。例えば、コイン投げ、サイコロ投げ、電子部品の騒音、核分裂など、彼の結果は三つの特性に合っています。は、実際の乱数です。
私たちはrandでプログラムを実行すると、毎回実行する乱数は同じであることが分かります。これは疑似乱数です。では、どうやって本物の乱数を生成しますか?プログラムを実行するたびにランダムなフィードを設定すればいいです。時間と時間は永遠に変化しています。コンピュータで時間を表しているのは、整数で表されているタイムスタンプというものです。タイムスタンプは1970年1月1日0時0分0秒を基準として、現在時刻と基準時刻の秒数の差を計算します。
タイムスタンプ(0)を取得するには、ヘッダファイルtime.hを含む必要があります。time関数の戻りタイプはtime-tといい、timeは本質的にunsigned long longです。したがって、強制的なタイプ変換が必要になります。time-t結果を強制的にunsigned intに変換します。データがなくなるかもしれません。この警告をコンパイラに提示する必要がないようにするためです。
srand((unsigned int)time(0))
四、全体のプログラム実現
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int menu()
{
printf("*********************
");
printf(" !
");
printf("1.
");
printf("2.
");
printf("
");
printf("*********************
");
int choice = 0;
scanf("%d", &choice);
return choice;
}
void game()
{
printf("
");
int toGuess = rand() % 100 + 1;
while (1) {
int inputNum = 0;
printf(" 1-100
");
scanf("%d", &inputNum);
if (inputNum > toGuess) {
printf(" !
");
}
else if (inputNum < toGuess) {
printf(" !
");
}
else {
printf(" !
");
break;
}
}
}
int main()
{
srand((unsigned int)time(0));
int choice = menu();
while (1) {
if (choice == 1) {
game();
break;
} else if (choice == 0) {
printf("goodbye!
");
break;
} else {
printf(" !
");
}
}
system("pause");
return 0;
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。