c语言那些有趣的事 -- 猜数字游戏

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。

c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。

本章用循环去写一些题目。

让我们开启c语言学习之旅吧!

目录

一.前言

二.打印菜单

三.生成随机数

四.猜数字

五.总结


一.前言

        经过前面一系列的学习,我们对循环分支,有了一定的了解。我们能不能把之前学过的东西很好的串联起来呢?用之前学过的东西来写一个猜数字游戏,写完之后你会发现非常有成就感,让我们更加有动力有信息的学下去。

        首先写这个东西之前我们要对他进行一些分析,需要哪些功能呢?大致可以分为这几个模块,打印菜单,生成一个数字,根据用户输入的信息进行判断并且反馈给用户。

二.打印菜单

        在玩游戏之前,用户会看菜单进行选择。在这个游戏中可以给用户两种选择:1.玩游戏,2.退出游戏。通过分析,写出了这样一个代码。

这个逻辑是实现了,可是程序会有一些缺陷,只会进行一次判断,当玩了一把不过瘾怎么办?应该对程序进行一些优化,把这个过程循环起来。

        这个时候程序就可以进行多次选择判断了, 我认为在这种场景下用do while循环会比较合适,在任何情况下都会执行一次程序,当我们输入0的时候循环条件不成立,就终止循环退出游戏。

 到了这一步这个程序的基本框架就已经写出来了,接下来就把程序的具体功能实现出来。

三.生成随机数

  生成一个随机数是这个程序的灵魂,也是最难的地方。   

        c语言有一个函数rand可以生成一个随机数,他的头文件是<stdlib.h>。rand函数要和srand配合使用,srand是一个初始化随机数生成器。如果想要正确的使用srand就要给srand传递一个变化的值,计算机上的时间是时刻发生变化的。

代码如下

int ret=rand();
srand((unsigned int)time(NULL));

注:time函数可以返回一个时间戳,time函数的头文件是<time.h>

 这样随机生成一个数字的问题就解决了,但是为了让游戏更加好玩需要限制范围,生成一个100以内的数字,任何数%100的结果都会在100以内。

代码如下

int ret=rand()%100;

关于随机生成一个数字的知识就学这么多,以我们现在的知识储备也很难学好,后期再慢慢来。

四.猜数字

        当生成了一个随机数之后就要进入猜数字环境了,在这里需要封装一个game函数,game函数的主要功能是更具用户输入的值进行判断。

比如说:a>猜大了:提醒猜大了,继续猜。

              b>猜小了:提醒猜小了,继续猜。

              c>猜对了:恭喜你,猜对了,游戏结束。

代码如下:

 注 :会进行重复的判断和输入,直到猜对执行break退出程序。

效果如下:

 整个程序的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("********************************\n");
	printf("************1.paly**************\n");
	printf("************0.exit**************\n");
	printf("********************************\n");
}
void game()
{
	int ret = rand()%100;
	int guess = 0;
	while (1)
	{
		printf("请输入你要猜的数字");
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}
int main()
{   
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		
		menu();
		printf("请输入>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误\n");
			break;
		}
	} while (input);
	return 0;
}

五.总结

        突然发现我们已经可以写出一个70行左右代码的程序了,这是一种成长。相信读者从文章中,可以感受到我们是需要什么写什么。有个术语专门描述这种思路,“TDD”测试驱动开发,根据需要,敲出代码进行测试,这个过程就是在驱动我们进行开发。

   

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值