游戏背景:

每次游戏自动生成一个1-100的随机整数,玩家有五次猜的机会,猜对获得表扬,猜错离场或选择继续游戏。

代码思路:

运用void函数与嵌套循环

代码实现:

前期铺垫

考虑到要进行多次游戏,游戏菜单用一个void函数来实现;

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

这样就可以在循环里方便的使用了;

游戏菜单完成之后,就是玩家的选择界面了:

int main()
{int input = 0;while (1){menu();printf("请选择:>");scanf("%d", &input);while (input){switch (input){case 0:printf("退出\n");break;case 1:printf("开始游戏\n");break;default:printf("重新输入\n");break;}break;}}return 0;
}

但是出现了bug;

当我输入0的时候,它没有输出“退出”,而且又出现了菜单界面,并没有达到想要的效果;

原来是因为开头的while(input)输入0自然就没进入循环了;

那么换一种写法:

int main()
{int input = 0;while (1){menu();printf("请选择:>");scanf("%d", &input);while (1){if (input != 0){switch (input){case 1:printf("开始游戏\n");break;default:printf("重新输入\n");break;}break;}elseprintf("退出游戏\n");break;}}return 0;
}

但是似乎还是没有达到预期的效果;

输入0时游戏并没有真正地退出;

该如何修改代码呢?这时候我想到了do while函数

ps:C语言中循环的使用的频率是 for>while>do while 的,do while一般不怎么用到,但是在这里是最合适的;

int main()
{int input = 0;do{//打印菜单menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("猜数字\n");break;case 0:printf("退出游戏\n");break;default:printf("重新选择\n");break;}} while (input);return 0;
}

实现了预期效果;

创建游戏主体

同样用函数来实现:

void game()
{int x = rand() % 100+1;//生成1-100随机整数int a = 0;while (1){printf("请猜数字:>");scanf("%d", &a);if (x == a){printf("Bingou你真厉害!\n");break;//终止循环}else if (a > x)printf("偏大了\n");elseprintf("偏小了\n");}
}

其中break发挥了至关重要的作用,实现了猜中离场的效果

最终代码如下

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void menu()
{printf("************\n");printf("************\n");printf("**  play  **\n");printf("**  exit  **\n");printf("************\n");printf("************\n");
}void game()
{int x = rand() % 100+1;//生成1-100随机整数int a = 0;while (1){printf("请猜数字:>");scanf("%d", &a);if (x == a){printf("Bingou你真厉害!\n");break;}else if (a > x)printf("偏大了\n");elseprintf("偏小了\n");}
}int main()
{srand((unsigned)time(NULL));//随机数种子,只用调用一次即可,所以放在主函数内int input = 0;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;
}

最终运行效果:

放在文章最后:文章其中有 不完善的地方,欢迎交流指正。本人是一位刚接触编程语言不久的的大一新生,以后发更多的博客,期待与各位朋友一同沟通探讨,互相进步。

C语言趣味题:猜数字游戏(含代码创建思路与过程)相关推荐

  1. c语言编程题猜数字游戏6题,c语言编程—猜数字游戏.doc

    c语言编程-猜数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...

  2. C语言写出猜数字游戏的代码

    猜数字游戏,即电脑生成随机数,根据用户输入猜大猜小最终实现猜对数字 思想:电脑生成随机数跟用户输入的那个数进行比较,若大了或者小了继续猜,这里可以写个死循环知道猜对才可以跳出来 代码如下所示: #in ...

  3. 1到100猜数字游戏规则c语言,[C语言课程设计猜数字游戏1.doc

    [C语言课程设计猜数字游戏1 课 程 设 计 报 告 课程名称 C语言程序设计报告 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1104 学 号 33 姓 名 张腾 指导教师 黄晓宇 丁 ...

  4. 猜数字小c语言游戏课程任务书,C语言课程设计猜数字游戏姚成.doc

    课 程 设 计 报 告 课程名称 C语言程序设计报告 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1104 学 号 23 姓 名 姚成 指导教师 黄晓宇 丁敬忠 谭小兰 2012年 6月 ...

  5. C语言习题:猜数字游戏(C语言随机数)

    C语言习题:猜数字游戏(C语言随机数) 需要了解C语言随机数的生成方法: 在C语言中比较常用的随机函数是 rand 函数,它可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同 ...

  6. c语言课程设计猜数字游戏报告,C语言课程设计-猜数字游戏报告.doc

    C语言课程设计-猜数字游戏报告 摘要 该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游.排行榜查看.帮助等主要功能.当用户选择开始游戏时,系统会提示用户排行榜上猜数字 ...

  7. c语言课程设计猜数字游戏报告,C语言课程设计猜数字游戏报告

    C语言课程设计猜数字游戏报告 C 语言课程设计----猜数字1摘 要该 软 件 在 Windows 系 统 上 为 玩 家 提 供 猜 数 字 游 戏的 基 本 功 能 , 游 戏 用 户 可 以 选 ...

  8. c语言实现通讯录_C语言实现双人猜数字游戏

    点击上方"学士科技",选择"设为星标" 资讯.技术干货第一时间送达! C语言合集(基础.进阶.高级)通通有,点我点我      C语言实例 01.C语言编写简单 ...

  9. 如何用c语言实现【猜数字游戏】

    万里寻山历百艰而, 一朝见井纵九死以何辞. 不吃学习的苦,  就要吃生活的苦. 目录 ⌚一.前言 ⏰二.游戏逻辑 ⏳三.思维导图 ☎️四.游戏过程 ✒️ 五.代码分析 ⛳1.生成随机数的方法​ ⛳2. ...

  10. c语言编写一个猜数字游戏编写

    1.C语言实现猜数字游戏: #define _CRT_SECURE_NO_WARNINGS//猜数字游戏: // 1.由电脑自动生成一个随机数字 // 2.猜数字#include <stdio. ...

最新文章

  1. Mysql主从同步延迟问题及解决方案
  2. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...
  3. File 类型的文本框,选择文件时响应很慢解决方法
  4. 参加维基链超级节点竞选有什么好处呢?
  5. 压缩文件夹_怎样压缩文件夹并发送
  6. MySQL 数据库慢查询日志分析脚本
  7. Python中数字以及算数运算符的相关使用
  8. windows 7 PowerShell 笔记
  9. Java编程中值得注意的对象引用现象
  10. [C++STL]常用遍历算法
  11. mysql sql执行过程_MySQL探秘(二):SQL语句执行过程详解
  12. 开源协议神图介绍 MIT 与 Apache 等
  13. jQuery-dom和jQuery,入口函数(基本知识)
  14. python 创建随机数专题
  15. creo数控编程怎么样_世界一流数控编程软件,你都有了解过么?
  16. XILINX FPGA数字信号处理——5、离散傅里叶变换原理及信号频谱分析实现
  17. 技术分享|Javascript高级教程学习指南
  18. 植物大战僵尸的java源代码_植物大战僵尸java源码
  19. 前端一倍图、二倍图、多倍图
  20. 【Proteus仿真】Arduino UNO利用Stepper库实现uln2003驱动步进电机转动

热门文章

  1. wim工具扫描linux磁盘,WimTool Pro(WIM映像处理工具)
  2. 2021.3.23 富途牛牛笔试
  3. yolov4-论文解析(3)
  4. 打造Win10+WSL开发环境(2)
  5. 2017普实软件迎新年会报道
  6. java解析加密excel,java poi 打开加密 excel?该怎么处理
  7. 美团点评合并,百度成O2O最大变量
  8. QT笔记——Qt动态属性 之 unpolish() 和 polish()
  9. 别墅家庭无线WiFi覆盖解决方案
  10. Spring3开发实战 之 第二章:IoC/DI开发(2)