c语言实现猜数游戏

猜数游戏需要电脑产生一个0-100之间的随机数,然后用户输入自己猜的数,系统提示用户猜大或猜小,然后继续猜数,直到用户猜对为止。
由于猜数游戏需要每次产生不同的一随机数,于是便初次接触使用rand()函数和srand()函数,这两个函数作为库函数,被包含在stdlib.h文件中,故使用时要加上头文件。先来了解一下这两个函数。

rand()函数

函数声明:int rand(void);
函数功能:返回一个范围在 0 到 RAND_MAX 之间的伪随机数,RAND_MAX是一个常量,在不同的实现中会有所不同,但至少是32767。
注:未设定随机数种子时,系统默认的随机数种子为 1。则每次产生的值是相同的。
如果只用此函数,rand() 产生的是伪随机数字,每次执行时是相同的; 若要不同, 用函数 srand() 初始化它。

srand()函数

函数声明:void srand(unsigned int seed);
函数功能:播种由函数 rand 使用的随机数发生器,用来设置 rand() 产生随机数时的随机数种子,不返回任何值。
参数说明:seed – 这是一个整型值,用于伪随机数生成算法播种。
注:参数 seed 必须是个整数,如果每次 seed 都设相同值,rand() 所产生的随机数值每次就会一样。
有了这两个函数,猜数游戏就很简单了。上代码:

#include<stdio.h>
#include<time.h>//包含time函数
#include<stdlib.h>//包含rand函数
int main()
{
	int ret, n;
	while (1)
	{
		system("cls");//清屏
		//初始化随机数发生器 
		srand((unsigned)time(NULL));
		//返回0-100之间的随机数
		ret = rand() % 100;
		//printf("%d\n", ret);//这行代码用于测试
		printf("猜猜我是0-100中的哪一个?\n");
		while (1)
		{
			printf("请输入你猜的数:");
			scanf("%d", &n);
			if (ret == n)
			{
				printf("恭喜你,猜对了!\n");
				break;
			}
			else if (ret < n)
			{
				printf("你猜大啦,再猜一次吧!\n");
			}
			else
			{
				printf("你猜小了,再猜一次吧!\n");
			}
		}
		printf("退出输入0,继续玩游戏输入其他数字,请输入:");
		int t;
		scanf("%d", &t);
		if (0 == t)//退出程序
		{
			//return 0;
			exit(0);
		}
	}
	return 0;
}

基本功能实现后稍微处理对代码稍加改进,将功能打包成函数,使程序模块化,使得游戏更加有互动性并可以多次游戏

#include<stdio.h>
#include<windows.h>
#include<time.h>
void menu()
{
	printf("**********************************\n");
	printf("*********      1.play     ********\n");
	printf("*********      0.exit     ********\n");
	printf("**********************************\n");
}
void game()
{
	//1.生成随机数
	//2.猜数
	int ret=0;
	int guess = 0;
	ret = rand()%100+1;//产生1-100的随机数
	while (1)
	{
		printf("请输入你要猜的数字(1-100):");
		scanf("%d", &guess);
		if (ret <guess)
		{
			printf("猜大了,再猜一次吧。\n");
		}
		else if (ret>guess)
		{
			printf("猜小了,再猜一次吧。\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
}
int main()
{
	srand((unsigned int)time(NULL));//time(NULL)随机数起点,time()返回一个时间戳
	//srand函数整个工程调用一次就行,所以在主函数中调用一次就行
	int tmp = 0;
	do
	{
		menu();
		scanf("%d", &tmp);
		system("cls");
		switch (tmp)
		{
		case 1:game(); break;
		case 0:exit(0);
		default:
			printf("输入错误,请重新输入:");
		}
	} while (1);
	return 0;
}

程序小白所写,如发现错误,请大佬指出,望共同进步!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值