C语言猜数字游戏(rand函数)

发布时间:2026/10/29 1:38:04
C语言猜数字游戏(rand函数) 首先声明此博客不照搬抄袭存在自己的见解我所使用的编译器是VS2022一、游戏规则电脑随机生成一个1~100的随机值玩家猜值并给出相应的猜大猜小还是猜对的游戏反馈二、游戏所需函数1rand函数用于生成随机值可以生成一个伪随机数使用该库函数需要头文件#include stdlib.h#include stdio.h #include stdlib.h int main() { printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); return 0; }每次调用都会生成一个不一样的随机值运行截图我们再运行一次运行截图我们发现结果依然没变这是因为我们在调用rand函数之前我们需要在主函数里先调用一次srand函数才能让rand函数每次调用的返回值都不一样2srand函数我们在调用rand之前得先调用srand函数srand参数函数的参数类型是unsigned int不需要返回值只要srand函数里面的参数实时在变那么rand的返回值就会实时在变每次生成的值就都会不一样此时我们需要time函数的返回值作为我们srand函数的参数int main() { srand(变化的值); return 0; }3time函数time函数的作用是返回一个时间戳而时间戳是时刻都在变化的它作为srand的参数正合适由于我们time函数并不需要给其他参数去调用所以我们用timeNULLtime函数会返回当前的日历时间其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值单位是秒。返回的类型是time_t类型的time_t类型本质上其实就是32位或者64位的整型类型。// 32位系统 typedef long int time_t; // 64位系统 typedef long long time_t;如果time函数的参数是NULL那么只会返回当前时间差值如果time函数的参数是一个指针那么会把时间戳差值存入这个指针指向的变量并返回时间差值#include stdio.h #include time.h // time函数必须包含这个头文件 int main() { // 1. 定义time_t类型变量 t // time_t本质就是长整型存时间戳秒数 time_t t; // 写法1time(t); // 把当前时间戳 存入变量 t 当中 time(t); printf(time(t) 方式得到的时间秒数%lld\n, t); // 写法2time(NULL) // 只通过返回值获取时间不存入外部变量 time_t t2 time(NULL); printf(time(NULL) 方式得到的时间秒数%lld\n, t2); return 0; }运行截图这里我们用timeNULL更合适用timet创建了一个多余的指针变量t然后因为srand函数的参数类型是unsigned int而time函数的返回值是time_t所以我们要把timeNULL的返回值强制类型转化为unsigned intsrand((unsigned int)time(NULL));总结此时我们再调用rand函数时每次运行就都会创建一个新的srand值相当于给rand函数创建一个新的种子使得rand函数每次调用生成的值都可以不一样做到真正意义上的伪随机值#include stdlib.h #include time.h int main() { srand((unsigned int)time(NULL)); int a rand(); int b rand(); int c rand(); int d rand(); printf(%d\n%d\n%d\n%d\n, a, b, c, d); return 0; }两次运行的截图可以发现两次运行每个变量的值都会成不一样的随机值三、猜数字游戏代码的实现游戏总代码#include stdio.h #include stdlib.h #include time.h void game() { int r rand() % 100 1; int guess 0; while (1) { printf(请猜数字:); scanf(%d, guess); if (guess r) { printf(猜⼩了\n); } else if (guess r) { printf(猜⼤了\n); } else { printf(恭喜你猜对了\n); break; } } } void menu() { printf(***********************\n); printf(****** 1. play ******\n); printf(****** 0. exit ******\n); printf(***********************\n); } 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; }代码清晰易懂不做过多赘述注意一行代码int r rand() % 100 1;这串代码的作用是使生成的随机数的值的范围在1~100之间rand%100的值为0~99加1就为1~100公式若要生成a~b的随机值:a rand%b-a1当然也可以扩展功能例如五次没猜中则游戏失败游戏结束文章结语我们本章主要学习到的就是rand函数、srand函数、time函数的组合使用利用这三个函数达到我们想要生成的随机数的效果但其实底层也是依靠算法的生成的一个伪随机值。还学习到了分支和循环的组合使用让分支和循环的使用更加得心应手

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询