1。目的
この数字当てゲームを C 言語で作成する目的は、主にいくつかの知識ポイントの理解を深め、それらの知識ポイントを定着させることです。
1.1 乱数を生成する
乱数は rand() を使用して生成されます。パラメータを渡す必要はありません。生成される乱数の範囲は [0, 32767] です。生成される乱数は擬似乱数であり、生成されることに注意してください。事前定義されたアルゴリズムに従って、プログラムが実行されるたびに同じ順序で繰り返します。したがって、rand を使用する前に、シーケンスの重複の問題を解決するために、srand を使用してランダム シードを取得する必要があります。パラメータは unsigned int です。
1.2 タイムスタンプ
タイムスタンプは、グリニッジ標準時 1970 年 1 月 1 日 00:00:00 (北京時間 1970 年 1 月 1 日 08:00:00) から現在までの合計秒数を指します。 time 関数を使用してタイムスタンプを生成します。パラメーターはポインターであり、NULL を使用して NULL ポインターを表すことができます。
1.3ランドとスランド
数字当てゲームを実装する場合、srand をループ内に配置することはできません。srand((unsigned int)time(NULL));
をループ内に配置すると、ループ 反復は非常に高速であり、同じ秒内に複数回実行される場合があります。この場合、time(NULL) によって返される値が同じである可能性があり、乱数発生器が同じシード値で再初期化される可能性があります。
2. コード
# include<stdio.h>
# include<stdlib.h>
#include<time.h>
void menu()
{
printf("############################\n");
printf("####### 1.play 0.exit #####\n");
printf("############################\n");
}
void play()
{
int res = rand() % 100 + 1;
int sum = 0;
while (1)
{
printf("请输入猜的数字;\n");
scanf("%d", &sum);
if (sum < res)
{
printf("猜小了\n");
}
else if (sum > res)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
RAND_MAX;
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请输入选项\n");
scanf("%d", &input);
switch (input)
{
case 1:
play();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}