首页 > 其他分享 >初识C语言之猜数字游戏

初识C语言之猜数字游戏

时间:2024-12-08 18:57:00浏览次数:5  
标签:rand 函数 time C语言 初识 随机数 printf 玩家 游戏

一.猜数字游戏的本质

猜数字游戏本质就是生成随机数,然后进行猜数字,最后判断正误,决定是否需要继续猜数字。

二. 生成随机数

1.rand函数

①rand函数会返回一个伪随机值,范围是0-32767

②代码实现:printf("%d",rand());

如上方代码,会生成伪随机数。

③但是这个随机数不是真正的随机数,仅仅为伪随机数。用编译器多次实现上述代码,不难会发现每次生成的随机数是一样的。

2.srand函数

①srand是用来初始化随机数的生成器。

②代码实现:void srand(unsigned int seed);//void表示函数不返回任何值。

写此函数代码时需要包括#include<stdlib.h>的头文件。

③具体解释:

程序在调用rand函数前,会调用srand函数。通过srand函数的参数seed来设置rand生成随机数时的种子。只要种子在变化,那么生成的随机数便会不伪。

④函数写法

srand(1);     //左边括号内的1便是种子。

printf("%d",rand(1));

可以通过不断改变种子来改变随机数,使随机数不伪。当然如果种子固定的话,那么随机数就是固定的(伪随机数)。

3.time函数

①time函数的作用

因为上述生成随机数的方法太过于复杂,所以time函数可以方便的生成随机数。

②time函数的知识点

time函数用的是程序运行时间为种子,利用时间随时不断变化这一特性。先来生成一个一直变化的种子,从而生成随机数。

③代码实现

#include  <stdio.h>

#include<stdlib.h>     //调用rand函数需要此文件。

#include <time.h>      //调用time函数需要此头文件。

int main()

{

srand((unsigned int)time(NULL));   //定义一个无符号变量time,time后面括号的NULL可以直接返回当前之间值

printf("%d",rand());//用time生成的种子,调用rand函数来获取随机数。

return 0;

}

④设置随机数的范围

  • 原理:利用a除以b的余数一定比b小这个数学知识
  • 代码实现举例:
  • 生成0-99的随机数rand()%100。
  • 生成一个1-100的随机数rand()%100+1。
  • 生成一个100-200的随机数100+rand()%(200-100+1)。
  • 生成一个a-b的随机数a+rand()%(b-a+1)

三.游戏代码的实现

    #include < stdio.h >

    #include < stdlib.h >//调用rand函数需要此头文件

    #include <  time.h  >//调用time函数需要此头文件

       void menu ()   //定义菜单函数,提高代码的效率

      {

        printf("******************\n");

        printf("******1.play******\n");//若选择1则游戏开始

        printf("******0.exit******\n");若选择0则退出游戏

        printf("*******************\n");//第一行和第四行的*起修饰作用。

      }

      void  game ()//定义game函数,提高代码效率。

     {

        int r=rand()%100+1;//获取0-100的随机数

        int guess=0;//定义变量guess并且初始化。

           while(1)//设置一个死循环,知道猜对便会退出。

          {

              printf("请猜数字\n");//为了方便玩家的游玩

              scanf("%d",&guess);//读取玩家输入的值,置于guess变量中。

              if(guess>r)//如果玩家猜的值大于生成的随机值

               printf("猜大了\n");//则输出猜大了,方便玩家进行下一步操作。

              else if(guess<r)//如果玩家猜的值小于生成的随机值。

              printf("猜小了\n");//则输出猜小了,方便玩家进行下一步操作。

                  else

                    {

                       printf("猜对了\n");//否则说明玩家猜对了,那么输出猜对了。

                       break;//当猜对时,结束死循环。

                     }

              }

       }

    int main

{

      int input=0;

      srand((unsigned int )time(NULL));//使用time函数用来生成真正意义的随机数

      do//运用do while循环,使得一上来屏幕就打印菜单等信息。

    {

        menu();//调用菜单函数

        printf("请选择:");//方便玩家输入0或者1,以方便代码下一步运行。

        scanf("%d",&input);  //读取玩家输入的值

          switch(input)//用switch语句对玩家输入不同的值进行分类讨论。

          {

                case 1://当玩家输入1时,

               {

                 game();//调用game函数,游戏开始

                  break;

               }

                 case 0://当玩家输入0时,

               {

                   printf("退出游戏\n");//不调用game函数,打印退出游戏,提醒玩家已退出游戏。

                    break;

                }

                     default://如果玩家输入0或者1以外的其它值,

                 {

                      printf("输入错误");//则输出输入错误,提醒玩家重新输入。

                      break;

                   }

              }

          }

       while(input)

      return 0;

}

 

 

 

标签:rand,函数,time,C语言,初识,随机数,printf,玩家,游戏
From: https://blog.csdn.net/WANGxinhua4321/article/details/144290010

相关文章

  • C语言动态哆啦A梦源码分享,无需编程基础,小白轻松运行,顺便解决Visual Studio 2022里c++
    下面是运行效果图:首先是安装VisualStudio2022VisualStudio2022IDE-适用于软件开发人员的编程工具打开上面的网址,选择下载社区版 下载好后运行,进来以后,如果是初次安装需要下载安装,我的是原来就有的所以会显示更新,如果原来就有的请点击修改按钮,选择配置下载并安装......
  • 实验5 C语言指针应用编程
    实验任务一:task1_1.c源代码:1#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain(){9inta[N];10intmin,max;11......
  • 实验5 C语言指针应用编程
    实验一:#include<stdio.h>#defineN5voidinput(intx[],intn);voidoutput(intx[],intn);voidfind_min_max(intx[],intn,int*pmin,int*pmax);intmain(){inta[N];intmin,max;printf("录入%d个数据:\n",N);input(......
  • 提现生成器【APP】自定义生成小游戏提现截图
    今天发个避坑帖!首先看看下面这种收益图,你们肯定见过不少!‘割割’们让你上车,必须得有一些吸引你的东东啊,不然怎么割你吗?其实这种截图都是软件生成的,我网站上分享过非常多的类似软件,什么聊天记录生成的啊,什么ZFB,微信零钱转账记录,余额多少啊。。。。。都可以生成。像这种......
  • 提现生成器【APP】自定义生成小游戏提现截图
    今天发个避坑帖!首先看看下面这种收益图,你们肯定见过不少!‘割割’们让你上车,必须得有一些吸引你的东东啊,不然怎么割你吗?其实这种截图都是软件生成的,我网站上分享过非常多的类似软件,什么聊天记录生成的啊,什么ZFB,微信零钱转账记录,余额多少啊。。。。。都可以生成。像这种......
  • C语言:函数
    C语言函数调用与函数递归1.函数调用概念:函数是C语言中的一种基本构建块,用于将程序分解成有意义的代码块。函数可以接受参数,执行特定任务,并返回结果。函数调用是指在程序中调用一个函数来执行其定义的任务。实例:#include<stdio.h>//函数声明intadd(inta,intb);......
  • 蓝桥杯 | 报数游戏 - 第十五届蓝桥杯大赛软件赛省赛Java 大学 B 组真题
    问题描述小蓝和朋友们在玩一个报数游戏。由于今年是2024年,他们决定要从小到大轮流报出是20或24倍数的正整数。前10个被报出的数是:20,24,40,48,60,72,80,96,100,120。请问第202420242024个被报出的数是多少?解题思路方案一importjava.util.Scanner;//1:......
  • 用C语言找到所有的鞍点~
    一起找到所有的鞍点题目输入n阶方阵,1<n<10,找出所有鞍点即对应下标,没有就输出None!测试用例:in:3123456789out:302in:3656767867out:600602in:3457385694out:None!in:21111out:100101110111/*鞍点*/ #includ......
  • C语言的常用标准数据类型、转义字符、输出格式符、输入格式符、算术运算符、关系运算
    目录 C语言的常用标准数据类型C语言的常用转义字符C语言的输出格式符C语言的输入格式符C语言的算术运算符C语言的关系运算符C语言的逻辑运算符 C语言的常用标准数据类型C语言的常用转义字符‘\n’       换行符‘\t’       制表符‘\b’ ......
  • C语言 常用函数
     目录一.常用的数学函数(头文件:math.h):1.Abs()函数2.fAbs()函数3.exp()函数4.log()函数5.log10()函数6.pow()函数7.fmod()函数8.sqrt()函数9.sin()函数10.cos()函数11.tan()函数二常用字符函数(头文件:ctype.h)1.islower()函数      2.isupper()函数  ......