一个简单的 **猜数字游戏** 的 C 语言例程

一个简单的 猜数字游戏 的 C 语言例程,代码包含详细注释,适合学习和练习基础语法:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>  // 用于生成随机数种子int main() {int target, guess, attempts = 0;srand(time(NULL));          // 初始化随机数种子(基于当前时间)target = rand() % 100 + 1;  // 生成1~100之间的随机目标数字printf("欢迎来到猜数字游戏!\n");printf("我已经想好了1到100之间的一个数字,请开始猜测吧!\n");do {printf("请输入你的猜测(1-100): ");if (scanf("%d", &guess) != 1) {  // 检查输入是否为整数printf("输入错误,请重新输入!\n");while (getchar() != '\n');    // 清空输入缓冲区continue;}attempts++;if (guess < target) {printf("太小了,再试试!\n");} else if (guess > target) {printf("太大了,再试试!\n");} else {printf("恭喜!你用了%d次猜中了数字%d!\n", attempts, target);break;}} while (1);  // 无限循环直到猜中return 0;
}

代码说明

  1. 核心逻辑

    • 使用 srand(time(NULL)) 初始化随机数种子,确保每次运行生成的随机数不同。
    • 通过 rand() % 100 + 1 生成 1~100 之间的随机数作为目标值。
    • 通过 do-while 循环持续接收用户输入,直到猜中为止。
  2. 输入验证

    • scanf("%d", &guess) != 1 检查用户输入是否为整数。
    • while (getchar() != '\n') 清空输入缓冲区,避免非法字符干扰后续输入。
  3. 反馈机制

    • 根据猜测值与目标值的大小关系,给出“太大”或“太小”的提示。
    • 统计猜测次数 (attempts),最终显示胜利信息。

运行效果

欢迎来到猜数字游戏!
我已经想好了1到100之间的一个数字,请开始猜测吧!
请输入你的猜测(1-100): 50
太大了,再试试!
请输入你的猜测(1-100): 25
太小了,再试试!
请输入你的猜测(1-100): 37
太大了,再试试!
请输入你的猜测(1-100): 31
恭喜!你用了4次猜中了数字31!

扩展方向

  1. 增加难度
    修改随机数范围(如 rand() % 500 + 1)或限制最大猜测次数。

  2. 添加功能

    • 记录历史猜测并显示。
    • 询问是否重新开始游戏。
    • 积分系统(根据猜测次数计分)。
  3. 图形化界面
    结合第三方库(如 SDLraylib)实现图形化交互。


这个例子涵盖了 输入输出、循环、条件判断、随机数生成 等基础语法,适合练习 C 语言的综合运用能力。你可以在此基础上自由修改和扩展!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Keepalived 多主模型与 LVS 高可用

一.Keepalived多主模型 Keepalived多主模型概念 如上图&#xff0c;keepalived主从架构性能损耗较严重&#xff0c;如果业务分类明确&#xff0c;则可以配置keepalived多主模型降低损耗&#xff0c;两台keepalived互为主备&#xff0c;如&#xff1a;订单业务走keepalived1&am…

RISCV虚拟化环境搭建

概要 本文记搭建 RISCV 虚拟化环境的流程。 整体架构 我们使用 QEMU 来模拟 RISCV 的各种硬件扩展环境&#xff0c;通过 QEMU 启动 Ubuntu 作为我们的 Host 来在 Host 之中通过 KVMTOOL 来运行 Guest&#xff0c;学习 RISCV 的虚拟化。 目前我的 X86_64 主机使用的是 Ubunt…

书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离

IT行业的发展瞬息万变,新技术层出不穷,很多技术人员出于个人兴趣、个人职业发展等考虑而选择一些流行的新技术,他们会把各种复杂的架构模式、高精尖的技术都加入架构中,这增加了项目的复杂度、延长了交付周期、增加了项目的研发成本。有些技术并不符合公司的情况,最后项目…

神策数据接入 DeepSeek,AI 赋能数据分析与智能运营

在 AI 技术迅猛发展的浪潮下&#xff0c;神策数据正在加速推进人工智能在数据分析和智能运营领域的深度应用。近日&#xff0c;神策数据宣布全面接入 DeepSeek&#xff0c;为企业客户带来更加智能化、高效的数据分析与智能运营服务。这一举措展现了神策数据在人工智能方向的探索…

c++ 类和对象 —— 中 【复习笔记】

1. 类的默认成员函数 如果一个类什么成员都没有&#xff0c;简称空类。但实际上&#xff0c;任何类在不写成员时&#xff0c;编译器会自动生成6个默认成员函数&#xff08;用户未显式实现&#xff0c;编译器生成的成员函数&#xff09; 这6个成员函数可分为三类&#xff1a; …

数学建模:MATLAB循环神经网络

一、简述 1.循环神经网络 循环神经网络&#xff08;RNN&#xff09;是一种用于处理序列数据的神经网络。不同于传统的前馈神经网络&#xff0c;RNN在隐藏层中加入了自反馈连接&#xff0c;使得网络能够对序列中的每个元素执行相同的操作&#xff0c;同时保持一个“记忆”状态…

在windows10系统上安装docker,然后在容器中运行GPU版本的Pytorch,并使用vscode连接该容器

一 . 安装Docker Desktop 首先打开网址https://docs.docker.com/desktop/install/windows-install/ 下载完后&#xff0c;双击下面的exe文件进行安装&#xff0c;默认情况下&#xff0c;Docker Desktop 安装在C:\Program Files\Docker\Docker 出现提示时&#xff0c;请确保…

基于SpringBoot + Vue 的房屋租赁系统

基于springboot的房屋租赁管理系统-带万字文档 SpringBootVue房屋租赁管理系统 送文档 本项目有前台和后台两部分、多角色模块、不同角色权限不一样 共分三种角色&#xff1a;用户、管理员、房东 管理员&#xff1a;个人中心、房屋类型管理、房屋信息管理、预约看房管理、合…

C++特性——智能指针

为什么需要智能指针 对于定义的局部变量&#xff0c;当作用域结束之后&#xff0c;就会自动回收&#xff0c;这没有什么问题。 当时用new delete的时候&#xff0c;就是动态分配对象的时候&#xff0c;如果new了一个变量&#xff0c;但却没有delete&#xff0c;这会造成内存泄…

C语言之 循环语句:程序运行的核心动力(上)

个人主页&#xff1a;strive-debug 在 C 语言中&#xff0c;分支结构可以通过 if、switch 语句来实现&#xff0c;循环结构则可以通过 for、while、do while 语句来实现。 if 语句 if 语句的语法形式如下&#xff1a; if (表达式)语句; 如果表达式成立&#xff08;为真&am…

FreeRTOSBug解析:一个任务printf打印一半突然跳转另一个任务,导致另一个任务无法打印

bug现象&#xff1a; key任务&#xff1a; 默认任务&#xff1a; 此时两个任务的优先级相同&#xff0c;抢占式调度&#xff0c;时间片轮转&#xff0c;空闲任务让步。 但是会出现一个问题&#xff0c;key任务在发送完队列之后不会立即跳转到默认任务的队列接收函数后的print…

操作系统八股文整理(一)

操作系统八股文整理 一、进程和线程的区别二、进程与线程的切换过程一、进程切换进程切换的步骤&#xff1a; 二、线程切换线程切换的步骤&#xff1a; 三、进程切换与线程切换的对比四、上下文切换的优化 三、系统调用一、系统调用的触发二、从用户空间切换到内核空间三、执行…

卷积神经网络(CNN)之 EfficientNet

在深度学习领域&#xff0c;模型的计算效率与性能之间的平衡一直是一个核心挑战。随着卷积神经网络&#xff08;CNN&#xff09;在图像分类、目标检测等任务中取得显著成果&#xff0c;模型的复杂度和计算需求也急剧增加。2019年&#xff0c;Google Research 提出的 EfficientN…

学生选课管理系统数据库设计报告

学生选课管理系统数据库设计报告 一、需求分析 &#xff08;一&#xff09;项目背景 学生选课管理系统是高校教学管理的重要组成部分&#xff0c;旨在实现学生选课、课程管理、成绩录入与查询等功能的自动化和信息化。通过该系统&#xff0c;学生可以方便地选择课程&#xf…

工具介绍《Awsome-Redis-Rogue-Server 与 redis-rogue-server》

1. 核心功能与攻击场景 redis-rogue-server 基于Redis主从复制漏洞&#xff08;CVE未公开&#xff09;&#xff0c;针对Redis 4.x~5.0.5版本设计&#xff0c;通过伪造恶意主节点强制同步恶意模块&#xff08;.so文件&#xff09;实现远程代码执行&#xff08;RCE&#xff09;。…

Razor C# 变量

Razor C# 变量 引言 在ASP.NET MVC和Razor视图引擎中,变量是构建动态网页的基础。理解Razor C#变量的使用对于开发者来说至关重要。本文将详细介绍Razor C#变量的概念、类型、作用域以及如何在实际项目中有效使用它们。 一、Razor C# 变量的概念 Razor C# 变量是存储在Raz…

【QA】模板方法模式在Qt中有哪些应用?

在 Qt 框架中&#xff0c;模板方法模式&#xff08;Template Method Pattern&#xff09;被广泛应用于框架的设计中&#xff0c;通过定义算法骨架并允许子类在不改变结构的情况下重写部分步骤。以下是 Qt 中典型的应用场景及示例&#xff1a; 1. 事件处理&#xff08;Event Ha…

有趣的算法实践:整数反转与回文检测(Java实现)

题目描述&#xff1a;整数反转与回文检测 要求实现两个功能&#xff1a; 将输入的整数反转&#xff08;保留符号&#xff0c;如输入-123返回-321&#xff09;判断反转后的数是否为回文数&#xff08;正反读相同&#xff09; 示例&#xff1a; 输入&#xff1a;123 → 反转结…

【协作开发】低成本一键复刻github的gitea

在阅读 next-public 时&#xff0c;反思原本的需求&#xff0c;是否本未倒置&#xff0c;故而重新调研当下开源现状。发现 gitea 完全满足商业软件的开发要求&#xff0c;并且价格足够低&#xff0c;使用足够方便&#xff0c;其他同类软件完全不用看了&#xff0c;真是世界级的…

基于“动手学强化学习”的知识点(二):第 15 章 模仿学习(gym版本 >= 0.26)

第 15 章 模仿学习&#xff08;gym版本 &#xff1e; 0.26&#xff09; 摘要 摘要 本系列知识点讲解基于动手学强化学习中的内容进行详细的疑难点分析&#xff01;具体内容请阅读动手学强化学习&#xff01; 对应动手学强化学习——模仿学习 # -*- coding: utf-8 -*-import gy…