zoukankan      html  css  js  c++  java
  • 学习 C 语言丨编写一个简单的猜数字游戏

    当你学习一门新的编程语言时,这个“猜数字”游戏是一个很好的入门程序。下面是如何用 C 语言来编写它。

    练习编程的最佳方法是编写示例程序,它能帮助你练习新知识。

    “猜数字”游戏的伟大之处在于它践行了几个编程概念:如何使用变量、如何比较值、如何打印输出以及如何读取输入。

    电脑从 1 到 100 中随机挑选一个数字,你必须通过猜测来算出来。我听到了很多人都在学习 C 语言的消息。所以,我想接着用 C 语言写一个“猜数字”的游戏。

    去取一个随机数

    从写一个函数来选择一个随机数字来开始“猜数字”游戏。在编写函数时,优秀的程序员会尽量使它们具有灵活性,这样他们就可以重用它们来解决略有不同的问题。

    因此,与其硬编码函数来选择 1 到 100 之间的一个随机数,不如编写函数来选择 1 到某个整数 maxval 之间的一个随机数:

    #include <stdio.h>
    
    #include <sys/random.h>
    
    int randnum(int maxval)
    
    {
    
      /* pick a random number from 1 to maxval */
    
      int randval;
    
      getrandom(&randval, sizeof(int), GRND_NONBLOCK);
    
      /* could be negative, so ensure it's positive */
    
      if (randval < 0) {
    
        return (-1 * randval % maxval + 1);
    
      }
    
      else {
    
        return (randval % maxval + 1);
    
      }
    
    }

    该函数使用 Linux 的系统调用getrandom来生成一系列随机数。

    你可以在手册页中了解关于这个系统调用的更多信息,但请注意,getrandom将用随机的 0 和 1 填充变量。这意味着最终值可以是正的,也可以是负的,因此你需要在之后进行测试,以确保randnum函数的结果是正值。

     

    编写程序

    你可以用这个函数来写你的“猜数字”程序:

    #include <stdio.h>
    
    #include <sys/random.h>
    
    int randnum(int maxval)
    
    {
    
      ...
    
    }
    
    int main(void)
    
    {
    
      int number;
    
      int guess;
    
      number = randnum(100);
    
      puts("Guess a number between 1 and 100");
    
      do {
    
        scanf("%d", &guess);
    
        if (guess < number)
    
       {
    
          puts("Too low");
    
        }
    
        else if (guess > number)
    
        {
    
          puts("Too high");
    
        }
    
      } while (guess != number);
    
      puts("That's right!");
    
      return 0;
    
    }

    程序首先使用randnum函数从 1 到 100 之间选择一个随机数。在向用户输出一个提示后,程序进入一个do-while循环,以便用户可以猜测数字。

    在循环的每次迭代中,程序测试用户的猜测的数值。如果用户的猜测小于随机数,程序将输出“Too low”,如果猜测大于随机数,程序将输出“Too high”。循环继续,直到用户的猜测与随机数相同。

    当循环退出时,程序输出 “That's right!”,然后立即结束:

    $ gcc -o guess -Wall guess.c
    
    $ ./guess
    
    Guess a number between 1 and 100
    
    50
    
    Too high
    
    30
    
    Too low
    
    40
    
    Too low
    
    45
    
    Too high
    
    42
    
    Too low
    
    43
    
    Too low
    
    44
    
    That's right!

    尝试动手

    在学习一门新的编程语言时,这个“猜数字”游戏是一个很好的入门程序,因为它以一种非常直接的方式练习了几个常见的编程概念。

    通过用不同的编程语言实现这个简单的游戏,你可以演示一些核心概念,并比较每种语言的细节。

    你有最喜欢的编程语言吗?你会如何用它来编写“猜数字”游戏呢?关注本系列文章,查看你可能感兴趣的其他编程语言的示例。


    - End -

    —————————————

    不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

    【值得关注】我的 编 程 学 习 交 流 俱 乐 部 !【点击进入】

    C语言入门资料(网盘链接免费分享):


     

    C语言推荐书籍(PDF免费分享):


     
  • 相关阅读:
    Ceph rbd删除image遭遇watchers异常处理
    Ceph OSD更换硬盘后遭遇PG Inconsistent异常与处理
    Rook Ceph OSD异常,格式化osd硬盘重新挂载
    Count on an IEnumerable<dynamic>
    [原创] [C#] 转换Excel数字列号为字母列号
    [MAC] Load Crypto.Cipher.ARC4 Failed, Use Pure Python Instead.
    转:Chrome调试工具介绍
    转:一组jQuery插件的连接
    动态的链式传递执行
    C#中克隆随机数的三种方法(为什么我想到了茴字的四种写法
  • 原文地址:https://www.cnblogs.com/huya-edu/p/15206372.html
Copyright © 2011-2022 走看看