初识C——《猜数游戏》
猜数游戏的实现
- 游戏说明
- 游戏功能需求分析
- 功能实现
- 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——《猜数游戏》相关推荐
- python猜数游戏在程序中预设一个_一道Python简单程序结构练习题
1.猜数游戏. 在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜数字,如果大于预设的数, 显示"遗憾,太大了":如果小于预设的数,显示"遗憾,太小了": ...
- python猜数游戏流程_python简单猜数游戏实例
本文实例讲述了python简单猜数游戏.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python import random number = random.randint ...
- php猜数游戏63,PHP实现猜数游戏的代码实例分享
猜数游戏有两种玩法: 第一种:两个人玩,一方出数字,一方猜.出数字的人要想好一个指定位数的数,数字可重复,不能让猜的人知道. 猜的人就可以开始猜.每猜一个数,出数者就要说大过或小过出的数. 第二种:两 ...
- 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计
课程设计的目的及意义 目的:通过本次课程设计,可以使我进一步认识MATLAB理论方法和实际意义,对理论知识进行必要实践.培养我们设计和仿真的基本能力,以便最终和生产实践以及其他科学结合. 意义: 1. ...
- 十四、Java练习:一个猜数游戏
@Author:Runsen @Date:2020/5/23 本专栏是付费学Java专栏,今天我做一个猜数游戏.将前面,我写的全部复习下. 其实,这个猜数游戏,也是我学Java中的学过的. 文章目录 ...
- 猜数游戏,随机目标数字,直到猜中退出
/* 猜数游戏(其三:目标数字是0~999的随机数)*/#include <time.h> #include <stdio.h> #include <stdlib.h&g ...
- 猜数游戏 (10 分)
猜数游戏 (10 分) 用户从键盘输入两个整数,第一个数是要猜测的数n(<10),第二个数作为随机种子.随机生成一个1~10的整数,如果该数不等于n,则再次生成随机数,如此循环,直至猜中数n,显 ...
- Python案例:猜数游戏
Python案例:猜数游戏 一.猜数游戏概述 Every programmer has a story about how they learned to write their first prog ...
- 采用python语言实现猜数游戏_用python实现猜数游戏
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...
最新文章
- {} 与 function() { } , 选用空对象{}来存放keyValue
- Optional变量初学者指南
- Vim杂记:Sublime的配色方案
- MVC学习之分页 【转】
- 【渝粤题库】广东开放大学 秘书实务 形成性考核
- Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案...
- 4400元起!iPhone 12全系售价曝光:标配数据线但无充电器
- RTOS原理与实现05:事件控制块实现
- python能干什么-Python这么火,学完到底能干什么
- SVN安装及使用教程图文详解
- python 安装包的默认路径与更改
- Web 前端学习 案例三之制作网页表单
- 模块七:mixer模块
- wxpython各种基本控件_wxpython 基本的控件
- Weston中HDMI热拔插检测
- linux卸载飞行模式驱动,解决:Ubuntu飞行模式 使用硬件开关关闭
- 前端优化中的防抖与截流
- 外包也开始卷起来了???
- MySQL数据库的官网下载、安装及卸载(2018年最新)
- mdev动态创建插入硬件设备
热门文章
- 爬虫--js加密数据(盐值加密和时间戳)和python转译
- 格式化 命令 linux,Linux分区格式化的命令
- 神器Ai工具箱全集,不用找了你想要的Ai都在这里。
- AgileEAS.NET平台开发指南-数据层开发
- 51单片机c语言按键程序,51单片机C语言程序(四)键盘 数码管 跑表程序
- topik怎么读_韩语TOPIK的1-6级是个什么概念呢?
- 大连托福考试百家外语托福口语考试的难度与要求分别是什么
- Canvas实现自定义图片大小(Vue)
- 互联网就像是酒...
- matlab符号计算中提取,[matlab]符号表达式中的系数提取问题