我是靠谱客的博主 顺利煎蛋,最近开发中收集的这篇文章主要介绍手写C语言之分支循环应用-编写猜数字游戏(09),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

    • 猜数字游戏(产生100以内的数字)
      • 定义功能打印函数
      • 猜数字函数
      • 主函数
      • 完整代码
    • 每文一语

在这里插入图片描述

前面文章有一个密码登陆的程序,这里需要强调一下数组是不需要取地址,因为数组本身就是以地址的形式存储的。

猜数字游戏(产生100以内的数字)

游戏可以一直玩,有功能选项!并且我们的游戏一打开就可以运行了,所以我们使用do while循环的模式。

定义功能打印函数

void menu()
{
	printf("**********************************n");
	printf("*********** 1.play **********n");
	printf("*********** 0.exit **********n");
	printf("**********************************n");
}

每次程序运行之后都需要我们进行打印信息,用于我们的用户进行玩游戏的提示,所以我们需要编写一个打印函数,该函数没有返回值,所以是void!

猜数字函数

//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
	int random_num = rand() % 100 + 1;
	int input = 0;
	while (1)
	{
		printf("请输入猜的数字>:");
		scanf("%d", &input);
		if (input > random_num)
		{
			printf("猜大了n");
		}
		else if (input < random_num)
		{
			printf("猜小了n");
		}
		else
		{
			printf("恭喜你,猜对了n");
			break;
		}
	}
}

这里我们需要产生一个随机值,这里的随机值和我们其他语言(Python)是不一样的,这里为什么要将产生的rand()%100呢?因为这里是随机数的最大值,需要控制在100以内,利用取余操作符,模100=1——99,然后加1,就是1-100的数字。

主函数

int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do
	{
		menu();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			break;
		default:
			printf("选择错误,请重新输入!n");
			break;
		}
	} while (input);
	return 0;
}

这里首先需要用户输入一个值,这个值那么是0,要么是1,所以它可以作为我们循环是否执行的判断依据,利用switch进行执行。

srand((unsigned)time(NULL));

由于每次生成的随机数要满足随机,所以我们需要利用我们的初始化随机函数种子:

1、拿当前系统时间作为种子,由于时间是变化的,种子也在变化,可以产生随机数。计算机中的随机数实际上都不是真正的随机数,如果两次给的种子一样,则会生成相同的随机序列。 所以,一般都会以当前的时间作为种子来生成随机数,这样更加的随机。
2、使用时,参数可以是unsigned型的任意数据,比如srand(10);
3、如果不使用srand,用rand()产生的随机数,在多次运行,结果是一样的。

而且这个函数只需要调用一次,不然它产生的数比较的逼近,无法模拟真实的游戏场景,所以我们将其初始化随机种子放到我们的main函数。

完整代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("**********************************n");
	printf("*********** 1.play **********n");
	printf("*********** 0.exit **********n");
	printf("**********************************n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
	int random_num = rand() % 100 + 1;
	int input = 0;
	while (1)
	{
		printf("请输入猜的数字>:");
		scanf("%d", &input);
		if (input > random_num)
		{
			printf("猜大了n");
		}
		else if (input < random_num)
		{
			printf("猜小了n");
		}
		else
		{
			printf("恭喜你,猜对了n");
			break;
		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do
	{
		menu();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			break;
		default:
			printf("选择错误,请重新输入!n");
			break;
		}
	} while (input);
	return 0;
}

在这里插入图片描述

每文一语

要学会遇事不惊,才是遇事而为!

最后

以上就是顺利煎蛋为你收集整理的手写C语言之分支循环应用-编写猜数字游戏(09)的全部内容,希望文章能够帮你解决手写C语言之分支循环应用-编写猜数字游戏(09)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部