c++实现1到100 猜数字

  • Post author:
  • Post category:其他



要求:随机生成一个1-100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或者过小,如果猜对恭喜玩家胜利,并且退出游戏。


实现历程:

一开始是在main()函数中直接实现简单的猜数字游戏,后来经过一步步探索,增加了一个选择界面:玩家选择1 开始游戏,选择0 直接退出游戏,输入其他选项 重新输入;把猜数字游戏封装为myGuess函数,并增加一个计数的功能。


随机数范围:

int num = rand() % n + a;    a是起始值,n+a-1是终止值,n是整数的范围。


创建随机数种子:

srand((unsigned int)time(NULL)); 利用当前系统时间生成随机数,防止每次随机数都一样。

另外,在switch语句中,结束程序我选择了return和exit,因为使用break的话,只是会退出switch语句,程序会再次执行while,开始下一轮游戏。



程序如下:

#include <iostream>
using namespace std;

void myGuess()
{
	int num = rand() % 100 + 1;//生成1到100的随机数 
	//cout << num << endl;//用于查看随机数具体是多少,方便测试

	int myNum = 0;
	cout << "请输入你的猜测(只能是 1~100):" << endl;

	int count = 0;//用于计数猜了多少次
	bool flag = false;//设置标志位  为true时结束猜数

	while (!flag)
	{
		cin >> myNum;
		if (myNum >= 0 && myNum <= 100)
		{
			if (myNum > num)
			{
				cout << "猜大了,重新猜" << endl;
				count++;
				flag = false;
			}
			else if (myNum < num)
			{
				cout << "猜小了,重新猜" << endl;
				count++;
				flag = false;
			}
			else if (myNum == num)
			{
				count++;
				cout << "恭喜你,用了" << count << "次猜出来" << endl;
				flag = true;//猜出来了 标志设为 true
			}
		}
		if (count > 4)//一共有5次猜测机会
		{
			cout << "抱歉,你的机会已经用完" << endl;
			flag = true;
		}

		if (flag == true)
		{
			break;//退出while循环
		}
	}
}

int main()
{
	srand((unsigned int)time(NULL));//创建随机种子  利用当前系统时间生成随机数,防止每次随机数都一样

	//设置一个简单的选择界面
	cout << "***************************" << endl;
	cout << "******* 1、开始游戏 *******" << endl;
	cout << "******* 0、退出游戏 *******" << endl;
	cout << "***************************" << endl;

	int select = 0;
	while (true)
	{
		cout << "请输入你的选择:" << endl;
		cout << "1、开始游戏" << endl;
		cout << "0、退出游戏" << endl;
		cin >> select;

		switch (select)
		{
		case 1:
			myGuess();
			system("pause");
			return 0;//退出程序
			//break;//如果使用break,将会退出switch,但还是会再次执行while循环
		case 0:
			cout << "退出成功!" << endl;
			system("pause");
			exit(0);//在调用处强行退出程序,运行一次程序就结束 参数:0表示程序正常结束,非0表示程序非正常结束。
		default:
			cout << "输入有误,请重新输入" << endl;
			break;
		}
	}

	system("pause");//按任意键继续
	return 0;
}

认真的敲打了一遍,才发现自己有很多小知识点都没记住,未来的学习之路还很长很长,向各位大佬学习!



版权声明:本文为m0_55614270原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。