首页 > 编程语言 >17.C结构化程序 猜数字游戏

17.C结构化程序 猜数字游戏

时间:2024-04-06 11:12:04浏览次数:460  
标签:rand 游戏 17 int choice 结构化程序 red printf 输入

////猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
// 产生一个0~RAND_MAX之间的伪随机数
// int rand=rand();  错误
//rand() 函数是标准库中的一个函数,用于生成一个伪随机数
// 而 rand 是一个变量名,当你使用 int rand = ...; 时
// 你实际上是在尝试定义一个名为 rand 的变量 由于变量名和函数名冲突,编译器通常会报错
//   srand(1);  这样传入一个种子会固定不变
    void menu() {
        printf("************************************\n");
        printf("欢迎来到猜数字游戏:\n");
        printf("请选择:1.play 0.quit\n");
        printf("********************************\n");
    }

    void game() {
        // 初始化随机数生成器
        srand((unsigned int)time(NULL));
        // 生成一个1到100之间的随机数
        int red = rand() % 100 + 1;
        int guess;
        int count = 0;
        while (count < 3) { // 允许用户猜3次
            printf("你还有%d次机会,请输入一个数字:", 3 - count);
            if (scanf("%d", &guess) != 1) {
                // 如果输入不是整数,则清除输入缓冲区并提示用户重新输入
                while (getchar() != '\n');
                printf("输入错误,请输入一个整数。\n");
                continue; // 跳过当前循环的剩余部分,重新开始循环
            }

            if (guess > red) {
                printf("猜大了,请再试一次。\n");
            } else if (guess < red) {
                printf("猜小了,请再试一次。\n");
            } else {
                printf("恭喜,猜对了!\n");
                return; // 猜对后退出函数
            }

            count++; // 增加猜测次数
        }

        // 如果循环正常结束,即用户用完猜测次数
        printf("很遗憾,你没有猜对。正确答案是%d。\n", red);
    }

    int main() {
        int choice;

        do {
            menu();
            printf("请输入选择: ");
            if (scanf("%d", &choice) != 1) {
                // 如果输入不是整数,清除输入缓冲区并提示用户重新输入
                while (getchar() != '\n');
                printf("输入错误,请输入1(play)或0(quit)。\n");
                continue;
            }

            switch (choice) {

                case 1:
                    game();
                    break;
                case 0:
                    printf("退出游戏\n");
                    break;
            }
        } while (choice != 0); // 当用户输入0时退出循环

        return 0;
    }

标签:rand,游戏,17,int,choice,结构化程序,red,printf,输入
From: https://www.cnblogs.com/gaodiyuanjin/p/18117233

相关文章

  • 游戏攻略|基于Springboot和vue的游戏分享平台系统设计与实现(源码+数据库+文档)
    游戏攻略分享平台目录基于Springboot的在线考试管理系统设计与实现一、前言二、系统设计三、系统功能设计 1、前台:2、后台5.2.1管理员功能模块四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道......
  • 洛谷P1000超级玛丽游戏C++
    题目描述超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。********************####....#.#..###.....##....###.......############......
  • 2024.3.17 模拟赛
    A贸易题目保证输入的边\(u<v\),说明题目中的图是一个有向无环图\(DAG\),但是不一定连通。可以记录\(f[i]\)表示到达\(i\)之前能遇到的最小的价格,使用拓扑排序进行\(dp\)转移。对于每一个点\(i\),如果其价格为\(a[i]\),就可以用\(a[i]-f[i]\)更新答案,取最大值即......
  • 2-35. 构建游戏的时间系统
    创建TimeManager在Update里面更新时间对时间进行赋值添加枚举修改Settings项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240405_2007......
  • 电竞游戏陪玩app,小程序,线下同城陪玩,娱乐
    适用领域一、陪玩行业:游戏陪玩领域国内已经很成熟。二、陪聊行业:同上。三、技能服务:家政、保洁等其他服务领域。其他领域根据您的擅长可自由选择搭配频道。......
  • 基于EP4CE6F17C8的FPGA键控灯实例
    一、电路模块1、LED开发板板载了4个用户LED发光二极管,其原理图如下所示,当FPGA的引脚输出为逻辑0时,LED会熄灭。输出为逻辑1时,LED被点亮。其实物图如下所示。LED的引脚分配见下表。2、时钟晶振开发板板载了一个50MHz的有源晶振,为系统提供时钟。其实物图如下所示。时......
  • 基于Springboot的在线游戏道具商城的设计与实现
    一、导语本文将介绍一个基于SpringBoot的在线游戏道具商城的设计与实现,该商城集成了多种功能模块,包括用户管理、商品管理、评论系统、个人中心、收藏模块、售出记录、聊天功能、公告管理、后台操作功能、网站公告、通知系统以及支付模块等。通过该商城,用户可以方便地购买......
  • 文心一言 VS 讯飞星火 VS chatgpt (230)-- 算法导论17.1 1题
    一、如果栈操作包括MULTIPUSH操作,它将k个数据项压入栈中,那么栈操作的摊还代价的界还是O(1)吗?文心一言:在栈的基本操作中,我们通常考虑的是单个元素的压入(push)和弹出(pop)操作,这些操作的摊还代价通常是O(1)。摊还代价考虑的是一系列操作的平均代价,而不是单个操作的最坏......
  • P3956 [NOIP2017 普及组] 棋盘
    原题链接题解dijkstra算法的应用。相同颜色权值为0;不同颜色权值为1;有颜色到无颜色权值为2。其中不能连续两步走无颜色结点,即该情况需要特别考虑。code #include<bits/stdc++.h>usingnamespacestd;constintMAX=1e9;inta[105][105],dis[105][105],vis[105][105];int......
  • 代码随想录算法训练营第二十四天 二十五 | 回溯的理论基础,77. 组合 216. 组合总和 II
    77.组合https://leetcode.cn/problems/combinations/description/List<List<Integer>>res=newArrayList<>();List<Integer>path=newArrayList<>();publicList<List<Integer>>combine(intn,intk){......