首页 > 其他分享 >猜数字完全体?还能优化不?

猜数字完全体?还能优化不?

时间:2024-08-12 16:24:55浏览次数:14  
标签:rand srand 头文件 数字 int printf 完全 time 优化

1>> 前言

        首先感谢大家对之前文章的喜欢,你们的三连是我持续更新的动力

        继续采纳大佬们的意见,今天将以代码的形式,逐步剖析来进行分享和交流经验,希望能得到大家的喜欢。接下来和我一起步入C语言世界吧!

注:以下代码是C语言,但CSDN好像选不了,只有C++也可能是我没看到,欢迎评论区大佬指点一二

#include<stdio.h>
#include<string.h>
#include<time.h>//time时间戳的头文件 
#include<stdlib.h>//rand随机数的头文件
#include<windows.h>//调用windows系统命令的头文件 

void menu()//菜单 
{
	printf("****猜数字小游戏****\n");
	printf("*庄奕出品,必属精品*\n");
	printf("*****opt1.play******\n");
	printf("*****opt0.exit******\n");
	printf("********************\n");
	printf("请选择:>");
}
void game()
{
	int b=rand()%100 + 1; //随机数范围可以写成rand()%(最大值-最小值+1 )+最小值 
	int c=0;
	int count=5;//设置生命值为5 
	printf("一共有五条血");
	while (count)
	{
		printf("请输入数字(1-100):"); 
		scanf("%d",&c);//c是我们猜的数字 
		if (c < b)
		{
			printf("猜小了\n");	
		}
		else if (c > b)
		{
			printf("猜大了\n");	
		}
		else
		{
			printf("猜中了,正确数字是%d\n\n",b) ;
			break;
		}
		count--; 
		printf("你还有%d条血,用完就关机咯\n",count);
	}
	char f[30];
	if (count==0 )
	{
		printf("正确数字是%d\n",b) ;
		printf("你没机会了孩纸,请输入\"庄奕大王666\"则取消关机\n");
		system("shutdown -s -t 60");
		scanf("%s",f);
		if  (strcmp(f,"庄奕大王666")==0)
			{
				system("shutdown -a");
				printf("成功取消关机\n");
			}
			
	}
	
}
int main()
{
	srand((unsigned int)time(NULL));//设置随机数种子,以时间戳为种子,生成一次就好 
	menu();//菜单 
	int a=0;
	do
	{
		scanf("%d",&a);
		if (a == 1)
			{
				printf("开始游戏\n");
				game();//进入游戏 
				menu();
			}
		else if (a == 0 )
			{
				printf("退出游戏");
				break; 
			}
		else
			{
				printf("输入错误,请重新输入\n\n");
				menu(); 
			}
	}while (a);
	return 0;
}

 以上猜数字涉及到许多新手不知道的知识点,请容许我来一一介绍:

2>>分析代码

        我们读他人的代码第一步肯定是分析,看完头文件就找到main函数,从main函数开始一步步向下读,找到对应的跳转函数如menu菜单game游戏,以及不知道的rand、srand、time等等。

3>>rand怎么使用?srand是什么意思?

        rand是C语言中的随机数库函数,使用它需要头文件<stdlib.h>,这里我们需要知道rand的最大值是32767,也就是说rand的返回值在0-32767之间,但是我们使用时能发现一个问题,也就是两次打印结果一样,请看:

这就不得不提到srand这个库函数了,其实使用rand的时候srand自动设置为1(代表种子),我们没有更改srand数值,所以不管打印几次结果都是一样的,那我们要更改它的种子持续的变化,这又要一个随机值,那我们想要打造一个随机值有需要一个随机值,大家都有疑问:这不是自相矛盾了吗?肯定不是这样,这时我们可以想到我们电脑计算机中还有一个值是一直在变化的,那就是时间,但是时间我们肯定不能直接使用,所以我们就要用到时间戳(根据现在时间生成的一串数字,以匹配现在的时间),那么我们就要使用到time这个函数。

4>>time如何使用?

        time我也不知道具体的用法,只知道它的值是指针,现在还没学到,可以给它一个空指针,也就是NULL,但是time的类型是time_t,srand类型是int两个类型不匹配怎么办?诶不着急,在上篇文章讲过强制类型转换,我们只需要把time通过(unsigned int)转换为无符号整形即可。

这样我们的srand就是一个随机数种子了,也让rand可以生成随机数。

5>>rand范围怎么定义成自己想要的?

        这边给大家伙一个公式:rand() % (最大值-最小值+1)+最小值。什么意思呢?就是比如我们想要的随机数范围是1-100,那么我们套公式就可以得到:rand() % (100-1+1) +1。原理也很简单,我们rand范围是0-32767,那么%100就可以得到0-99之间的数,最后结果加1就可以得到1-100之间的数,是不是很神奇,哈哈我也是这么觉得。

6>>如何调用Windows系统命令?

        调用Windows系统命令需要用到system这个库函数,那库函数都有对应头文件,它的头文件是<windows.h>,这个是很好记的,然后使用系统命令只需要在ststem("");的双引号里输入就好,所有命令都和windows一样,我这里只调用了一个小小的关机命令(shutdown)还有更多的可以等着大家去探索。

7>>总结

        感谢大佬们能看到这里,这篇耗时43分钟,讲述了猜数字对小白来说的一些复杂代码,希望大佬们能够喜欢,我在这里表示由衷感谢!一起加油学习C语言吧!

标签:rand,srand,头文件,数字,int,printf,完全,time,优化
From: https://blog.csdn.net/m0_69282950/article/details/141133511

相关文章

  • JVM参数详解:优化应用程序性能的关键
    Java虚拟机(JVM)是Java程序的运行环境,它负责将Java字节码转换为机器码,并在实际计算机上执行。为了优化应用程序的性能,我们需要了解JVM的参数设置。本文将详细介绍JVM的常见参数及其作用,帮助您更好地理解和配置JVM。JVM参数分类JVM参数分为两大类:启动参数和系统属性。1.启......
  • linux反向代理原理:帮助用户更好地优化网络架构
    Linux反向代理原理详解反向代理是一种在网络架构中常用的技术,尤其在Linux环境下被广泛应用。它可以帮助实现负载均衡、安全防护和请求缓存等功能。本文将深入探讨Linux反向代理的原理、工作机制以及其应用场景。1.什么是反向代理反向代理是指代理服务器接收客户端的请求,......
  • BM69 把数字翻译成字符串
    1.题目描述有一种将字母编码成数字的方式:'a'->1,'b->2',...,'z->26'。现在给一串数字,返回有多少种可能的译码结果数据范围:字符串长度满足 0<n≤900<n≤90进阶:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)示例1输入:"12"返回值:2说明:2种可能的译码结果(”ab”或......
  • 苹果新规引发开发者声讨:科技巨头与欧盟《数字市场法》的较量
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点苹果新规引发开发者声讨:科技巨头与欧盟《数字市场法》的较量在科技巨头与监管机构的较量中,苹果公司的最新举措再次成为焦点。面对欧盟《数字市场法》(DMA)的压力,苹果......
  • 打造高效存储与访问体验:NFS共享携手Nginx负载均衡,赋能企业级数据流通与性能优化
     作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团团-CSDN博客前言:随着业务的增长,公司需要更多的服务器来支持用户访问和应用程序的运行。NFS共享可以解决文件存储的问题,而n......
  • C语言 ——猜数字
    目录1.前言2.游戏描述2.1游戏内容2.2游戏方法3.代码实现3.1生成游戏菜单3.2构建主函数3.3构建游戏函数4.代码附上1.前言猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏,下面我将详细介绍该游戏的实现和编程逻辑。并用二分法......
  • Scanner的进阶使用——数字的输入
    1.用Scanner输入数字(整数和小数)1.定义一个整数变量2.建立扫描器3.使用if4.建立电脑接收数据5.设置else(那么)语法6.关闭Scanner......
  • 【机器学习】机器学习在电商领域:个性化推荐系统优化与销售转化提升
    ......
  • 最优化 | 凸优化 | 二次规划cvxopt求解,如何确定系数?
    目录一、定义二、系数的确定三、例子四、代码一、定义在凸优化问题中,特别是在二次规划(QuadraticProgramming,QP)问题中,矩阵PPP通常用来定义目标函数中的二次项......
  • 深度学习优化器:《Lookahead Optimizer: k steps forward, 1 step back》
    深度学习优化器:《LookaheadOptimizer:kstepsforward,1stepback》项目地址:https://github.com/michaelrzhang/lookaheadpytorch版本:https://github.com/michaelrzhang/lookahead/blob/master/lookahead_pytorch.py论文地址:https://arxiv.org/abs/1907.08610使用......