C语言编写猜数游戏

C语言写猜数游戏,供大家参考,具体内容如下

这篇文章是给学完并学懂了C语言的分支(选择和循环)结构的朋友看的。

要做一个游戏或者程序先要想好有那些要求,以下是我认为一个猜数游戏必带的要求:

1、自定义猜数范围的起点和终点以及机会次数。
2、生成一个随机数。
3、如果输入猜入的数和生成的随机数相等,就提示猜对了并退出主函数,如果输入猜的数比生成的随机数大,就提示猜大了,如果输入猜的数比生成的随机数小,就提示猜小了,没猜对一次就减一次机会。
4、如果机会为0了,就提示没有机会了并输出随机数。

自定义猜数范围的起点和终点以及机会次数

先来写自定义猜数范围的起点和终点以及机会次数,代码如下:

int start,end,opportunity;//范围起点 范围终点 机会次数
printf("请输入猜数游戏的范围的起点:");
scanf("%d",&start);
printf("请输入猜数游戏的范围的终点:");
scanf("%d",&end);
printf("请输入猜数游戏的机会次数:");
scanf("%d",&opportunity);

生成一个随机数

生成一个随机数可以用srand()函数和rand()函数,srand()函数作用大致是每次运行生成的随机数都不同。rand()函数作用是生成并返回一个随机数。代码如下:

int random;//随机数
srand((unsigned)time(NULL));//每次运行生成的随机数都不同
random=rand();//默认随机数的范围是0~32767

那么如何生成我们输入的起点和终点那个范围呢,代码如下:

int random;//随机数
srand((unsigned)time(NULL));//每次运行生成的随机数都不同
random=rand()%(end-start)+end;//生成的随机数余(end-start)的结果就是一个不大于(end-start)的数,最后加上start之后就得到了

一个不小于start并且不大于end的数,就可以控制范围了

srand()函数

srand()函数是随机数发生器的初始化函数,函数原型为:void srand(unsigned seed);,所在头文件为:#include <stdlib.h>。

它会初始化并提供一个随机种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数,比如:srand(1);,直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用time函数来获得系统时间,它的返回值为从00:00:00GMT,January1,1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数,即:srand((unsigned)time(&t));,还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned)time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的数据。

其实计算机并不能产生真正的随机数,而是已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号用srand()函数获取这个编号,然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,也就一直在变,相当于是随机数了。只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。 即:只需在主程序开始处调用srand((unsigned)time(NULL)); 后面直接用rand就可以了。不要在for等循环放置srand((unsigned)time(NULL));

rand()函数

rand()函数作用是生成并返回一个随机数,函数原型为:int rand(void);,所在头文件为:#include <stdlib.h>。

rand()函数每次调用前都会查询是否调用过srand(seed),是否给seed设定了一个值,如果有那么它会自动调用srand(seed)一次来初始化它的起始值。若之前没有调用srand(seed),那么系统会自动给seed赋初始值,即srand(1)自动调用它一次。

总结以上代码

目前为止,我们做了自定义猜数范围的起点和终点以及机会次数、生成一个随机数,目前全部代码如下:

#include <stdio.h>
#include <stdlib.h>//srand()函数和rand()函数头文件
#include <time.h》>//time()函数的头文件
int main()
{
    int start,end,opportunity,random;//范围起点 范围终点 机会次数 随机数
    srand((unsigned)time(NULL));//每次运行生成的随机数都不同
    printf("请输入猜数游戏的范围的起点:");
    scanf("%d",&start);
    printf("请输入猜数游戏的范围的终点:");
    scanf("%d",&end);
    printf("请输入猜数游戏的机会次数:");
    scanf("%d",&opportunity);
    random=rand()%(end-start)+start;//生成的随机数余(end-start)的结果就是一个不大于(end-start)的数,最后加上start之后就得到了一个不小于start并且不大于end的数,就可以控制范围了
    return 0;
}

比较输入的数与随机数的大小来做相应的事

如果输入猜入的数和生成的随机数相等,就提示猜对了并退出主函数,如果输入猜的数比生成的随机数大,就提示猜大了,如果输入猜的数比生成的随机数小,就提示猜小了,没猜对一次就减一次机会,代码如下:

while(opportunity--)//只要没有猜对一次,机会就少一次
{
    scanf("%d",&guess);//输入需要猜的数
    if(guess==random)//当猜的数和随机数相等,说明猜对了
    {
        printf("猜对了!\n");//提示猜对了
        return 0;//直接退出函数
    }
    else if(guess>random)//当猜的数比随机数大
        printf("猜大了!剩余机会次数为%d次\n",opportunity);//提示猜大了和剩余机会次数
    else if(guess<random)//当猜的数比随机数小
        printf("猜小了!剩余机会次数为%d次\n",opportunity);//提示猜小了和剩余机会次数
}
printf("没有机会了,正确答案是%d",random);//没有退出函数就说明机会用完了并且没有猜对,就提示没有机会了并揭晓答案

总结以上代码

#include <stdio.h>
#include <stdlib.h>//srand()函数和rand()函数头文件
#include <time.h>//time()函数的头文件
int main()
{
    int start,end,opportunity,random,guess;//范围起点 范围终点 机会次数 随机数 猜的数
    srand((unsigned)time(NULL));//每次运行生成的随机数都不同
    printf("请输入猜数游戏的范围的起点:");
    scanf("%d",&start);
    printf("请输入猜数游戏的范围的终点:");
    scanf("%d",&end);
    printf("请输入猜数游戏的机会次数:");
    scanf("%d",&opportunity);
    random=rand()%(end-start)+start;//生成的随机数余(end-start)的结果就是一个不大于(end-start)的数,最后加上start之后就得到了一个不小于start并且不大于end的数,就可以控制范围了
    printf("请在%d到%d之内猜数字,你有%d次机会:\n",start,end,opportunity);
    while(opportunity--)//只要没有猜对一次,机会就少一次
    {
        scanf("%d",&guess);//输入需要猜的数
        if(guess==random)//当猜的数和随机数相等,说明猜对了
        {
            printf("猜对了!\n");//提示猜对了
            return 0;//直接退出函数
        }
        else if(guess>random)//当猜的数比随机数大
            printf("猜大了!剩余机会次数为%d次\n",opportunity);//提示猜大了和剩余机会次数
        else if(guess<random)//当猜的数比随机数小
            printf("猜小了!剩余机会次数为%d次\n",opportunity);//提示猜小了和剩余机会次数
    }
    printf("没有机会了,正确答案是%d",random);//没有退出函数就说明机会用完了并且没有猜对,就提示没有机会了并揭晓答案
    return 0;
}

测试代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2021-09-13

用C语言实现猜数字游戏

本文实例为大家分享了C语言实现猜数字的具体代码,供大家参考,具体内容如下 问题:计算机随机生成一个数字,用户进行猜数字,当用户猜错时,提醒用户猜高/猜低,直到用户猜的数字与计算机给的随机数一致时,提示猜对了并结束本次游戏. 思路:整个程序分为三个部分. 1.使用printf完成一个主菜单,方便用户操作. 2.写一个game函数,完成猜数字游戏的过程. 3.主函数,调用game函数,最终实现猜数字游戏. 重点:如何生成一个随机数. 如果直接使用to_guess = rand() % 100 + 1

C语言实现猜数字大小的游戏

本文实例为大家分享了C语言实现猜数字大小的具体代码,供大家参考,具体内容如下 void menu() void menu() { printf("******** 猜数字游戏 ********\n"); printf("*********** 1.开始 *************\n"); printf("*********** 0.退出 *************\n"); } 简单的一个菜单用于显示. void game() void gam

C语言实现的猜数字小游戏

本文实例为大家分享了C语言实现猜数字小游戏的具体代码,供大家参考,具体内容如下 代码如下 #include <stdio.h> #include<stdlib.h> #include<time.h> //rand为产生随机数的函数 void game() { srand((unsigned)time(NULL)); int key = (int)rand() % 100; //产生一个1---100之间的数 int ret = 0; while (1) { printf

C语言实现猜数字游戏

本文实例为大家分享了C语言猜数字的具体代码,供大家参考,具体内容如下 题目:电脑随机给出一个数字,在一定范围内猜,有提示 问题分析: 电脑根据函数随机给出一个范围内的数字: 用户输入数字,去猜大小 对比数字,电脑给出提示 不断循环,直到猜正确 注意: 因为随机函数rand()是特殊的函数,计算机不会实现真正的随机数,所以需要一个seek来传给 rand(). 代码如下: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<

C语言游戏之猜数字

本文实例为大家分享了C语言实现猜数字游戏的具体代码,供大家参考,具体内容如下 标题 1-100之间我已经想好了一个数了,看你能不能猜到,五次机会哦! 代码在此,请求出战! #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int c; puts("这是一个神奇的猜数字小游戏,如果你想玩的话,请按123继续,不想玩啊就按321"); scanf_s("%d&q

C语言实现猜数字的小游戏

使用C语言来实现一个猜数字的小游戏 学习C语言有几天的时间了,在这期间对C语言的语法,程序结构有了了解,自己也练习过许多的代码,今天分享一个猜数字的代码. 一.猜数字游戏 描述:由程序随机生成一个1~100之间的数字,由用户去猜,直至猜对为止 1.代码 代码如下: #include <stdio.h> #include <stdlib.h> #include <time.h> void menu(void) { printf("|---------------

C语言实现猜数字小游戏

本文实例为大家分享了C语言猜数字的具体代码,供大家参考,具体内容如下 一.描述 猜数字游戏. 二. 程序 使用srand((unsigned)time(NULL)),产生随机数种子. int random = rand() % 100 + 1,产生0~100之间的随机数. 应加上头文件#include<time.h> #include<stdio.h> #include<windows.h> #include<time.h> void menu(){ pri

基于C语言实现猜数字游戏

前言 系统生成一个[1,100]之间数字,用户随便输入一个整数,如果用户输入的数字比系统生成的数字小,提示"猜低了",如果用户输入的数字比系统生成的数字大提示猜高了,如果相同,提示猜对了. 一.先生成一个[1,100]的随机整数 C语言的标准库中已经包含了很多现成的功能,rand可以生成一个随机整数,可以查阅cplusplus文档.浏览器输入www.cplusplus.com.cstdlib这是C++风格的写法,stdlib.h是C语言风格的写法,C++也可以用stdlib.h.C语言

C语言实现猜数字

今天给大家带来一个猜数字游戏,这是我个人接触到的第一个比较完整的游戏程序了,我觉得还蛮好玩. 由于我是再linux下编写的,可能有些地方和windos不一样,只需要做一些小改动就好~ 代码如下: 如果你玩了觉得好玩或者对你有帮助不妨给我点一个赞支持一下哦~ #include<stdio.h> #include<stdlib.h> #include<time.h> #include<unistd.h> void Menu(){ printf("***

C语言代码实现猜数字

本文实例为大家分享了C语言代码实现猜数字的具体代码,供大家参考,具体内容如下 题目描述 猜数字游戏,顾名思义,就是需要人们猜测一个未知但已确定的数.其中,这个未知但要确定的数就要由编写程序随机来产生,当这个数生成后我们猜数字,程序告诉我们猜的高了,低了,或猜对了来提示我们猜数. 代码实现 #include <stdio.h> #include <stdlib.h> #include <time.h> void Guess_num(void) { int n; char

python实现猜数字游戏

说明: 本例改编自<Python编程快速上手>.例子很简单我就不多说了 直接上代码,给初学python练手用. 给你6次机会猜对一个预先生成好的1-20之间的整数.覆盖一下知识点: 条件语句 控制语句 random函数 读取输入 异常处理 代码: """ 猜数字 """ from random import * secretNumber = randint(1, 20) # print(secretNumber) print('猜一个

Java实现猜数字小游戏(有次数限制)

用代码模拟猜数字的小游戏,供大家参考,具体内容如下 思路: 1.首先需要产生一个随机数字,并且一旦产生不再变化.用Random的nextInt方法 2.需要键盘输入,所以用到了Scanner 3.获取键盘输入的数字,用Scanner当中的nextInt方法 4.规定最多只能猜7次,次数用完提示并游戏结束.已经得到了两个数字,判断(if)一下: 如果太大了,提示太大,请重试 如果太小了,提示太小,请重试 如果猜中了,游戏结束,并附上猜中数字的次数 5.重试就是再来一次,循环次数不确定,用while

go语言实现猜数字小游戏的方法

本文实例讲述了go语言实现猜数字小游戏的方法.分享给大家供大家参考.具体分析如下: 随机生成一个数字,输入一个数字看是否匹对,匹配则结速,反之提示是大了还是小了 复制代码 代码如下: package main import (     "bufio"     "fmt"     "math/rand"     "os"     "strconv"     "time" ) var (  

Python版的文曲星猜数字游戏代码

复制代码 代码如下: # -*- coding: utf-8 -*- import random #数字类class NumberItem: #数字个数    _GUESS_NUMBER_COUNT_ = 4 def __init__(self):        self._num_ = [] #长度是否标准        def IsFormat(self):        return self._num_.__len__() == self._GUESS_NUMBER_COUNT_ #生成