猜数游戏的实现

  • 游戏说明
  • 游戏功能需求分析
  • 功能实现
    • 1、程序主体
    • 2、menu()函数
    • 3、game()函数
      • 问题
        • rand()函数
        • srand()函数
        • 时间戳
  • 最终实现代码

游戏说明

1、程序随机生成一个在1—-100之间的整数。
2、猜数字:用户输入数字,猜小了程序会提示用户猜小了;猜大了程序会提示猜大了;猜中了会提示用户恭喜猜中了。
3、用户完成一次游戏后可以选择是否继续。

游戏功能需求分析

1、要有一个菜单供用户选择,包含退出和继续游戏两个选项,并且实现相应功能。
2、程序要能生成随机数字。
3、程序要有判断选择功能,来对用户输入的数字进行甄别,提示。

功能实现

1、程序主体

int main()
{int input = 0;//创建变量,存储用户的选择数据//用循环实现游戏功能反复多次的执行do{menu();//调用函数,打印菜单。每次执行都打印一遍。printf("请选择:>");scanf("%d", &input);//用户选择进入游戏,或者退出switch (input){case 1:game();//用户选择进入游戏,执行game()函数break;case 0:break;//用户选择退出游戏default:printf("输入错误,请重新输入\n");//提示用户输入错误数据break;}} while (input);//input作为判断条件,用户输入0游戏则程序执行完毕,用户输入其他数字则返回do主体再次执行其中的语句return 0;
}

2、menu()函数

void menu()
{printf("***************\n");printf("*** 1.play ****\n");printf("*** 0.exit ****\n");printf("***************\n");
}//只是负责打印一个菜单界面,提示功能

3、game()函数

void game()
{int i = 0,num=0;num=rand();//C语言中rand函数返回的是0~RAND_MAX(32767)之间的一个随机数{printf("请猜一个数字:");scanf("%d", &i);//下面对用户输入进行判断if (i > num){printf("猜大了,再试一次\n");}else if (i < num){printf("猜小了,再试一次\n");}else{printf("恭喜猜对了!\n");break;}}
}

问题

rand()函数

至此,程序所有功能基本具备。但是不难发现rand()随机生成的数字与我们期望的数字范围差距很大。我们对此做出适当调整:

num=rand()%100+1;//对rand()取余,任何数字对100取余范围都在0--99,我们再对结果+1符合我们的要求

srand()函数

我们再次执行,进行多次游戏发现,每次生成的随机数都是一样的。我们查阅资料了解到,C语言中,rand函数在使用之前要使用一个srand函数来设置随机数的生成器,并且srand函数在程序中只要调用一次就可以了,不需要频繁调用。

srand((unsigned int) seed);
num=rand();

时间戳

srand()函数还需要一个参数,人为设置的话我们又发现随机数还是不会变化,我们需要一个一直在变化的数作为其参数。我们引入时间戳:time_t time (time_t* timer);

srand((unsigned int) time(NULL))//这里我们只需要将NULL设置成其参数
num=rand();

如果我们按这样的方式生成随机数,我们会发现,如果我们生成随机数太快,会生成相同相近的随机数。所以我们将srand()放在循环外,一个程序只执行一次。

最终实现代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{printf("***************\n");printf("*** 1.play ****\n");printf("*** 0.exit ****\n");printf("***************\n");
}
void game()
{int i = 0,num=0;num=rand()%100+1;while (1){printf("请猜一个数字:");scanf("%d", &i);if (i > num){printf("猜大了,再试一次\n");}else if (i < num){printf("猜小了,再试一次\n");}else{printf("恭喜猜对了!\n");break;}}
}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

初识C——《猜数游戏》相关推荐

  1. python猜数游戏在程序中预设一个_一道Python简单程序结构练习题

    1.猜数游戏. 在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜数字,如果大于预设的数, 显示"遗憾,太大了":如果小于预设的数,显示"遗憾,太小了": ...

  2. python猜数游戏流程_python简单猜数游戏实例

    本文实例讲述了python简单猜数游戏.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python import random number = random.randint ...

  3. php猜数游戏63,PHP实现猜数游戏的代码实例分享

    猜数游戏有两种玩法: 第一种:两个人玩,一方出数字,一方猜.出数字的人要想好一个指定位数的数,数字可重复,不能让猜的人知道. 猜的人就可以开始猜.每猜一个数,出数者就要说大过或小过出的数. 第二种:两 ...

  4. 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计

    课程设计的目的及意义 目的:通过本次课程设计,可以使我进一步认识MATLAB理论方法和实际意义,对理论知识进行必要实践.培养我们设计和仿真的基本能力,以便最终和生产实践以及其他科学结合. 意义: 1. ...

  5. 十四、Java练习:一个猜数游戏

    @Author:Runsen @Date:2020/5/23 本专栏是付费学Java专栏,今天我做一个猜数游戏.将前面,我写的全部复习下. 其实,这个猜数游戏,也是我学Java中的学过的. 文章目录 ...

  6. 猜数游戏,随机目标数字,直到猜中退出

    /* 猜数游戏(其三:目标数字是0~999的随机数)*/#include <time.h> #include <stdio.h> #include <stdlib.h&g ...

  7. 猜数游戏 (10 分)

    猜数游戏 (10 分) 用户从键盘输入两个整数,第一个数是要猜测的数n(<10),第二个数作为随机种子.随机生成一个1~10的整数,如果该数不等于n,则再次生成随机数,如此循环,直至猜中数n,显 ...

  8. Python案例:猜数游戏

    Python案例:猜数游戏 一.猜数游戏概述 Every programmer has a story about how they learned to write their first prog ...

  9. 采用python语言实现猜数游戏_用python实现猜数游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...

最新文章

  1. {} 与 function() { } , 选用空对象{}来存放keyValue
  2. Optional变量初学者指南
  3. Vim杂记:Sublime的配色方案
  4. MVC学习之分页 【转】
  5. 【渝粤题库】广东开放大学 秘书实务 形成性考核
  6. Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案...
  7. 4400元起!iPhone 12全系售价曝光:标配数据线但无充电器
  8. RTOS原理与实现05:事件控制块实现
  9. python能干什么-Python这么火,学完到底能干什么
  10. SVN安装及使用教程图文详解
  11. python 安装包的默认路径与更改
  12. Web 前端学习 案例三之制作网页表单
  13. 模块七:mixer模块
  14. wxpython各种基本控件_wxpython 基本的控件
  15. Weston中HDMI热拔插检测
  16. linux卸载飞行模式驱动,解决:Ubuntu飞行模式 使用硬件开关关闭
  17. 前端优化中的防抖与截流
  18. 外包也开始卷起来了???
  19. MySQL数据库的官网下载、安装及卸载(2018年最新)
  20. mdev动态创建插入硬件设备

热门文章

  1. 爬虫--js加密数据(盐值加密和时间戳)和python转译
  2. 格式化 命令 linux,Linux分区格式化的命令
  3. 神器Ai工具箱全集,不用找了你想要的Ai都在这里。
  4. AgileEAS.NET平台开发指南-数据层开发
  5. 51单片机c语言按键程序,51单片机C语言程序(四)键盘 数码管 跑表程序
  6. topik怎么读_韩语TOPIK的1-6级是个什么概念呢?
  7. 大连托福考试百家外语托福口语考试的难度与要求分别是什么
  8. Canvas实现自定义图片大小(Vue)
  9. 互联网就像是酒...
  10. matlab符号计算中提取,[matlab]符号表达式中的系数提取问题