猜数字游戏

目录

题目要求

解题思路

代码实现


题目要求

写一个猜数字游戏
1.自动产生一个1 - 100之间的随机数
2.猜数字
    a .猜对了,就恭喜你,游戏结束
    b .你猜错了,会告诉猜大了,还是猜小了,继续猜,直到猜对 I
3.游戏一个一直玩,除非退出游戏

解题思路

1.写出基本框架

#include <stdio.h>

void meau()//菜单
{

}

void game()//游戏
{

}

int main()
{
	int input = 0;
	meau();  //打印游戏菜单,
	scanf_s("%d", &input);
	switch (input)//规定1为开始游戏,2为结束游戏
	{
	case 1:
		printf("游戏开始!\n");
		game();//实现游戏功能
		break;
	case 2:
		printf("游戏结束!\n");
		break;
	default:
		printf("错误!请重新输入\n");
		break;
	}

	return 0;
}

2.题中要求游戏能够一直游玩,除非玩家主动选择结束,所以需要用到循环使game()能够不断执行。

do 
	{
		meau();  //打印游戏菜单,
		scanf_s("%d", &input);
		switch (input)//规定1为开始游戏,2为结束游戏
		{
		case 1:
			printf("游戏开始!\n");
			game();//实现游戏功能
			break;
		case 2:
			printf("游戏结束!\n");
			break;
		default:
			printf("错误!请重新输入\n");
			break;
		}
	} while (input != 2); //当input值为2时结束循环

3.实现meau()函数

void meau()
{
	printf("*********************************\n");
	printf("**********   1.开始游玩   *******\n");
	printf("**********   2.退出游戏   *******\n");
	printf("*********************************\n");
}

4.实现game()函数

       a.生成随机数

     C语言中生成随机数需要用到以下几个函数:

rand():在头文件#include <stdlib.h>中,返回类型为int(即生成的随机数),返回的数在0-32767之间。需与srand函数配套使用,不然生产的数并不随机。

 srand():在头文件#include <stdlib.h>中,需在括号中用time()函数加入时间戳。()内需填入unsigned int 类型。一般情况下调用一次就可以了。

 time():在头文件#include <time.h>中,返回值为int,可被强制类型转化。

 2.判断玩家猜出的数是否正确:当玩家猜的大或小时都输出提醒并让再次猜数

void game()
{
	int n = rand() % 100 + 1; 
	//生成随机数,任意一个数与100取余后取值在0-99
	int num = 0;
	
	while (1)
	{
		printf("请输入你猜的数字: ");
		scanf_s("%d", &num);
		if (num > n)
			printf("试试更小的数字吧。\n");
		else if (num < n)
			printf("试试更大的数字吧。\n");
		else
		{
			printf("恭喜!猜对了!\n");
			break;
		}
	}
}

 因为srand()一般只需调用一次所以并没有写在会被多次调用的game()中,而是写到只会被调用一次的main()中。

5.稍加调整后即可得到完整的代码。

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void meau()  //菜单
{
	printf("*********************************\n");
	printf("**********   1.开始游玩   *******\n");
	printf("**********   2.退出游戏   *******\n");
	printf("*********************************\n");
}

void game()  //游戏
{
	int n = rand() % 100 + 1; 
	//生成随机数,任意一个数与100取余后取值在0-99
	int num = 0;
	
	while (1)
	{
		printf("请输入你猜的数字: ");
		scanf_s("%d", &num);
		if (num > n)
			printf("试试更小的数字吧。\n");
		else if (num < n)
			printf("试试更大的数字吧。\n");
		else
		{
			printf("恭喜!猜对了!\n");
			break;
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));

	do
	{
		meau();   //打印游戏菜单
		printf("请选择:");
		scanf_s("%d", &input);
		switch (input)   //规定1为开始游戏,2为结束游戏
		{
		case 1:
			system("cls");  //清空屏幕
			printf("游戏开始!\n");
			game(); //实现游戏功能
			printf("请选择是否开始下局游戏\n");
			break;
		case 2:
			system("cls");
			printf("游戏结束!\n");  
			break;

		default:
			system("cls");
			printf("错误!请重新输入\n");
			break;
		}
	} while (input!=2);  //当input值为2时结束循环

	return 0;
}

运行截图 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值