C 语言猜数字小游戏完整实现(附带 8 次机会限制 + 菜单选择)(作业考试学习必备系列001)

一、项目简介

本程序基于标准 C 语言开发,无需依赖第三方库,仅使用stdio.hstdlib.htime.h基础头文件,实现经典猜数字小游戏。 程序封装菜单打印、游戏逻辑两大函数,采用do-while循环实现菜单重复选择,switch分支处理功能选项,随机生成 0~100 之间的目标数字,限制玩家最多 8 次猜测机会,每次猜测给出偏大 / 偏小提示,机会耗尽直接公布正确答案,支持重复游玩、随时退出,代码结构清晰,适合 C 语言初学者练习函数封装、随机数、循环分支综合知识点。

二、功能说明

  1. 游戏主菜单程序启动后循环打印功能菜单,提供两个选项:1. 开始游戏、2. 退出程序;输入非 1/2 数字会提示输入错误,重新选择。
  2. 随机数字生成通过srand((unsigned int)time(NULL))设置随机数种子,保证每次运行生成不重复的 0~100 整数目标数字。
  3. 猜数字核心逻辑
    • 限定玩家共有 8 次猜测机会;
    • 输入数字与目标比对,分别提示猜大 / 猜小,并实时打印剩余次数;
    • 猜对直接通关,跳出循环;次数归零则游戏失败,输出正确数字;
  4. 循环游玩机制一局游戏结束后自动返回主菜单,可再次开启新游戏,选择 2 即可结束程序。

三、核心技术点

  1. 函数封装:将菜单打印、游戏逻辑拆分为独立函数,降低代码耦合,可读性更高;
  2. 随机数生成:time获取时间戳作为随机种子,解决 rand () 固定序列问题;
  3. 循环嵌套:外层do-while实现菜单常驻,内层while(1)实现单局持续猜数;
  4. 分支判断:switch处理菜单选项,多层if-else判断猜测结果;
  5. 输入交互:scanf实现控制台数字输入,适配 Windows 编译器,添加#define _CRT_SECURE_NO_WARNINGS消除 scanf 安全警告。

四、运行环境

  • 编译器:VS2013/VS2019/VS2022、Dev-C++、CodeBlocks
  • 系统:Windows
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> void hanshua() { printf("****************************\n"); printf("*********1.开始猜数字*******\n"); printf("*********2.退出游戏*********\n"); printf("****************************\n"); } void hanshub() { int shu = 0; srand((unsigned int)time(NULL)); shu = (0 + rand() % (100 - 0 + 1)); int jishu = 8; int cai = 0; while (1) { printf("请猜数字(0-100)\n"); scanf("%d", &cai); if (cai == shu) { printf("恭喜猜对了!\n"); break; } else if (cai > shu) { printf("猜大了!\n"); jishu--; printf("还剩%d次机会\n", jishu); } else { printf("猜小了!\n"); jishu--; printf("还剩%d次机会\n", jishu); } if (jishu == 0) { printf("机会用完,游戏失败,不愧是我干儿子,正确答案是:%d\n", shu); break; } } } int main() { int xuanze = 0; do { hanshua(); printf("请选择!\n"); scanf("%d", &xuanze); switch (xuanze) { case 1: hanshub(); break; case 2: { printf("游戏结束\n"); break; } default: printf("错误输入,请重新选择!\n"); break; } }while(xuanze!=2); return 0; }