【C语言初阶(6)】猜数字游戏

news/2024/11/29 13:29:53/

文章目录

  • 1. 游戏描述
  • 2. 代码结构
    • 2.1 菜单函数
    • 2.2 游戏函数
    • 2.3 主体函数
  • 3. 代码实现

1. 游戏描述

  1. 电脑自动生成一个1-100以内的数字。
  2. 我们输入一个我们猜的数字。
  3. 如果我们猜的数字比电脑随机生成的数字大,那么输出(猜大了),反之输出(猜小了)。
  4. 一直循环到猜到正确的数字为止。

2. 代码结构

2.1 菜单函数

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

2.2 游戏函数

void game()//猜数字游戏的整个逻辑
{//1. 电脑产生一个 1~100 的随机数 —> rand:生成随机数的函数//2. 猜数字int guess;int ret = rand() % 100 + 1;//生成一个 1~100 之间的随机数while (1)//必须要一直循环到猜对为止{printf("请输入你猜的数字:");scanf("%d", &guess);if (guess > ret){printf("猜大了\n");}else if (guess < ret){printf("猜小了\n");}else{printf("猜对了\n");break;}}
}

1. rand 函数

  • 生成一个 0 ~ RAND_MAX(0 ~ 32767) 之间的随机值,引用头文件 stdlib.h
  • 但是在调用 rand 函数之前需要先调用 srand 函数(设置随机数的生成器),否则随机生成的数字在每一次游戏的过程中都相同,这就没有意义了。

在这里插入图片描述

2. srand 函数

  • 设置一个随机的起点,引用头文件 stdlib.h
  • 设置一个随机起点,需要使用整型,但由于整型为固定值,随机值也相同,所以我们需要一个每时每刻都在发生变化的值,那就是:时间戳。
  • 时间戳:(是计算机当前时间 - 起始时间)所得到的差值就是时间戳,使用时间戳来设置随机数的生成起点,使用时间戳要用 time 函数来获取当前时间,srand 函数返回值为unsigned int 类型,那么要将 time 强制类型转换成 unsigned int 类型,time(NULL)为空指针。

3. time 函数

  • 获取当前系统时间,返回一个时间戳
  • 引用头文件 time.h

4. rand 函数为何要 % 100 + 1 ?

  • 因为游戏要我们生成的是 1 ~ 100 之间的数字,但是 rand 函数生成的又是 0~32767 之间的数,所以这时候才需要采用 rand () % 100 + 1的方法;
  • 就像任何数 % 2 的余数肯定在 0 ~ 1 之间,% 3 的余数在 0 ~ 2 之间一样,用 rand 函数生成的随机数 % 100 的结果肯定就在 0 ~ 99 之间;
  • 让 rand 函数生成的随机数 % 100 之后再 + 1,这样就能确保最终生成的随机数在 1~100 之间了。

2.3 主体函数

int main()
{int input;srand((unsigned)time(NULL));//这条语句必须要放在主函数,不然生成的随机数的值有可能相同。//不能在每次生成随机数的时候都生成一个起点,整个工程只用生成一次起点就够了。do //不管怎样都至少要执行一次循环体把菜单给弄出来。{menu();//进入选项菜单printf("请选择:");scanf("%d", &input);switch (input){case 1:	printf("游戏开始!\n");game();break;case 0:	printf("退出游戏!\n");break;default:printf("选择错误\n");break;}}while (input);return 0;
}

3. 代码实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>void menu()
{printf("**********************\n");printf("******* 1.play *******\n");printf("******* 0.exit *******\n");printf("**********************\n");
}void game()//猜数字游戏的整个逻辑
{//1. 电脑产生一个 1~100 的随机数 —> rand:生成随机数的函数//2. 猜数字int guess;int ret = rand() % 100 + 1;//生成一个 1~100 之间的随机数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;srand((unsigned)time(NULL));//这条语句必须要放在主函数,不然生成的随机数的值有可能相同。//不能在每次生成随机数的时候都生成一个起点,整个工程只用生成一次起点就够了。do //不管怎样都至少要执行一次循环体把菜单给弄出来。{menu();//进入选项菜单printf("请选择:");scanf("%d", &input);switch (input){case 1:printf("游戏开始!\n"); game(); break;case 0:printf("退出游戏!\n"); break;default:printf("选择错误\n"); break;}} while (input);return 0;
}

在这里插入图片描述


http://www.ppmy.cn/news/665761.html

相关文章

如何在微信小程序中下载APP?

方案you 1、官方api接口&#xff1b;——目前小程序官方未提供专门下载APP的接口&#xff1b;小程序目前是不允许将流量导出到APP之外&#xff0c;所以合理推断&#xff0c;该方案短期内并不可行。 2、通过web-view在小程序内打开网页&#xff0c;然后提供触发下载功能&#xf…

微信表情包下载保存到本地,(新版微信可用)简单教程

问题&#xff1a;微信新版无法保存表情包&#xff08;微信表情包加密&#xff09;&#xff0c;且微信网页版不能登录 方法一&#xff1a; 1、登录你的企业微信、添加外部微信联系人&#xff08;自己的微信号&#xff09; 2、微信&#xff08;自己的微信号&#xff09;向企业…

让微信扫描直接下载你的APK

去年在做一个项目的时候&#xff0c;用微信扫描apk下载失效&#xff0c;显示空白页&#xff0c;网上找找发现在后面加一个字符串即可&#xff0c;于是简单搞定。过了一阵子&#xff0c;今年不行了&#xff0c;我的敏捷个人下载二维码也失效了&#xff0c;今天和大家说一下&…

微信视频号下载视频工具3.0,实测有效免费保存!

1.首先下载提供的绿色特别版软件&#xff0c;安装之后&#xff0c;按照以下步骤操作&#xff1a; ①下载后运行&#xff0c;每次运行会检测网络适配器&#xff0c;请耐心等待安装完成&#xff1b; ②接着会弹出一个升级提示&#xff0c;直接无视X掉它即可&#xff1b; ③接着进…

微信开发者工具下载使用

一.搜索微信开发者工具&#xff0c;到官网下载 https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 二.下载git代码拉取工具&#xff0c;将需要调试的代码拉到指定的位置。 git clone -b master https://codeup.aliyun.com/5fdb2f0a99b59ba3c5ead6c7…

在微信里面打开APP下载链接

这个问题我查看了许多资料&#xff0c;最后总结一下&#xff1a; 我首先看了IOS端微信关于下载app的整个逻辑&#xff1a; 关于公众号里面关于微官网里面的app下载&#xff0c;如果你将你的应用中在微信开发平台认证过来&#xff0c;这个是要掏钱的&#xff1b;你点微官网app…

微信开发者工具下载地址

度娘广告太多了&#xff0c;直接上官方的 2017.1.4版本 https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t201714 无版本号下载页面 https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

微信内置浏览器提示【可在浏览器打开此网页下载文件】

场景&#xff1a; 要一个微信认证CAS单点认证功能&#xff0c;将系统用户与微信用户绑定&#xff0c;认证端在CAS中&#xff0c;用户账号体系也是用的CAS。 现象&#xff1a; 在微信中拿到code、openid后&#xff0c;去cas认证&#xff0c;认证结束后&#xff0c;跳转回系统…