c语言 猜数游戏

#include<stdio.h>
#include<stdlib.h>
int Menu()
{
//创建一个Menu函数,打印需要的用户界面
printf("=\n");
printf(“\n");
printf(" 1.开始游戏 \n");
printf(" 0.退出游戏 \n");
printf("
\n”);
printf("
=\n");
//用choice来判断是否进入循环
int choice = 0;
//因为调运的数在while循环之中,所以每调运一次,执行一次
printf(“请输入您的选择:”);
scanf_s("%d", &choice);
return choice;
}
//创建一个Game函数
//Gmae函数是一个没有返回值的函数,所以写为void Game
void Game()
{
//要产生一个随机数,因为要降低才数的难度,所以此处生成的为一个1-1000以内的随机数
//要让系统产生一个随机数,就需要调用rand函数,它在stdlib.h头文件之中
//我们可以在cplusplus网站中进行查找其功能
//可以看到其运算规则如下,注意 当头文件写为cstdlib时是c++的书写分格,当头文件写为stdlib.h时是c语言的书写风格
v1 = rand() % 100; // v1 in the range 0 to 99
v2 = rand() % 100 + 1; // v2 in the range 1 to 100
v3 = rand() % 30 + 1985; // v3 in the range 1985-2014

//用 result 来保存产生的随机数
int result = rand() % 1000 + 1;
while (1)
{
	//让用户输入一个数字,来进行判断
	int cai;
	printf("请输入您猜的数字:\n");
	scanf_s("%d", &cai);
	if (cai < result)
	{
		printf("您输入的数字低了,请继续猜\n");
	}
	else if (cai > result)
	{
		printf("您猜的数字高了.请继续猜\n");
	}
	else
	{
		printf("猜对了,真棒!!!\n");
		break;
	}
	
	//当用户输入的数与产生的随机数不符时,提示高了还是低了
	//让用户继续猜数,直到用户猜对时跳出循环
}

}
int main()
{
//创建一个循环,在这个循环中进行操作
//当循环退出的条件不确定时,先写一个死循环
while (1)
{
//打印一个用户界面,让用户选择是否进入游戏
//创建一个Menu函数,调用Menu函数,根据是否满足Menu函数中的条件来进行判断
//如果用户选择进入游戏,则进入猜数游戏的循环
//如果用户选择退出游戏,则显示"谢谢您的参与!!"
//如果用户输入有误,则提示"输入有误"
int choice = Menu();
if (choice == 1)
{
printf(“请输入您猜的数:\n”);
//调用Game函数,借助Game函数中猜数的功能,来进行猜数
//因为Game函数没有返回值,所以调用时不能以int sum=Game();的形式来进行调用,应该直接以Game();的形式进行调用
Game();

	}
	else if (choice == 0)
	{
		printf("谢谢您的参与!!!\n");
		break;
	}
	else
	{
		printf("输入有误,请重新输入!!\n");
	}
}
system("pause");
return 0;

}
但是我们运行程序之后发现,每次猜数的内容都为42,即每次电脑产生的随机数都为42 ,所以该程序有一部分内容是需要进行改变的.
程序的运行结果如下图所示
在这里插入图片描述
原因:因为rand()函数如果单独调用的情况下,它产生的数为一个伪随机数,即当rand()函数在第一次调用的过程中产生的随机数,在后面的程序中,这个随机数的值不会发生变化,就以第一次rand()函数产生的随机数为准
所以要想每次更新rand()的值就需要给rand()加一个种子,再每次调用ran()函数的时候更新这个种子,这种情况要用到srand函数
制定种子的方法也有两种,第一种就是手动进行制定
unsigned in seed;
scanf("%d",seed);
srand(seed);
把这部分内容加在rand()函数的前面就可以达到,手动制定种子的效果
在这里插入图片描述
方法2自动制定种子的效果
第二种是通过调用时间函数来达到自动制定种子的目的
在rand()函数前面加上
srand(unsigned(time(null));
记住在使用这种自动产生种子的情况下,需要在前面加上include(time.h);
程序的运行结果如下
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值