【C言語】-----簡単な数字当てゲーム

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;
}

おすすめ

転載: blog.csdn.net/2201_75443644/article/details/131131532