【c语言】猜数字游戏

文章目录

  • 一.前言
  • 二.题目要求
  • 三.题目分析
    • 1.生成1-100之间的随机数
    • 2.玩家猜数字,电脑给出反馈,猜大了或猜小了,直到猜对为止。
  • 四.结尾

一.前言

本文章将使用c语言实现猜数字游戏

二.题目要求

电脑生成数字,玩家输入数字,电脑判断
例: 输入1, 电脑回答:猜小了。
输入26, 电脑回答:猜大了。

三.题目分析

1.生成1-100之间的随机数

1.1rand函数
这个函数用来生成随机数,使用时需要包含头文件 ,stdlib.h
函数原型
int rand(void)

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
int main()
{
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;
}

第一次运行结果为
【c语言】猜数字游戏_第1张图片
可这并不是真正的随机数 我们可以进行第二次运行
【c语言】猜数字游戏_第2张图片
结果与第一次相同 这并不是偶然 再运行n次得到的结果还是和第一次一样,原因就是这个rand函数并不是真正意义上的随机数。这时就需要srand函数来辅助
1.2srand函数
这个函数是用来初始化随机数的,使用之后rand函数生成的数与前一次会不相同
函数原型为
void srand(unsigned int seed)
这里的seed是种子的意思,种子在变化,rand生成的随机数就在变化,但想要种子变化还需要一个一直在变化的量time
1.3time函数
用它来改变种子seed的值,使用前也需包含头文件
函数原型为
time_t time (time_t* time)
time函数会返回一个从1970年1月1日0时0分0秒到现在时间的差值。因为时间在一直变化,所以使用后种子的值也一直在变化,从而使rand函数生成的随机数的值一直在变化。
如果参数timer是NULL的话,time函数则会返回这个时间的差值,也叫时间戳
此时电脑便可以生成真正的随机数了,代码如下

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
int main()
{
	srand((unsigned int)time(NULL));
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;
}

1.4给随机数限制范围
限制生成的随机数在0-100之间

rand()%100+1

2.玩家猜数字,电脑给出反馈,猜大了或猜小了,直到猜对为止。

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
void menu()
{
	printf("***********************\n");
	printf("******请输入数字********\n");
	printf("******play--1  ********\n");
	printf("******exit--0  ********\n");
	printf("***********************\n");
	printf("***********************\n"); 
	printf("***********************\n");
}
void game()
{
	int  gusse = 0;
	int r = rand() % 100 + 1;
	int count = 5;
	printf("你共有五次机会\n");
	while (count)
	{
		printf("请输入你猜的数字:");
		scanf("%d", &gusse);
		count--;
		if (gusse > r)
		{
			printf("猜大了\n");
			printf("你还有%d次机会\n",count);
		}
		if (gusse < r)
		{
			printf("猜小了\n");
			printf("你还有%d次机会\n",count);
		}
		if (gusse == r)
			printf("猜对了\n");
	}
	if (count == 0)
		printf("次数用完了,游戏结束\n");
	
}
int main()
 {
	int input = 0;
	srand((unsigned int)time(NULL));
	do {
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 0:
			printf("游戏结束\n");
			break;
		case 1:
			game();
			break;
		default:
			printf("输入错误,请重新输入:");
			break;
		}
	} while (input);
	return 0;
}

四.结尾

以上就是本文章的所有内容,如果大家有更好的方法,大家可以在评论区讨论或者私信给博主。

你可能感兴趣的:(小游戏,c语言)