通过编写一个有趣的游戏学习 C 语言

从写一个函数来选择一个随机数字来开始猜数字游戏。在编写函数时,优秀的程序员会尽量使它们具有灵活性,这样他们就可以重用它们来解决略有不同的问题。因此,与其硬编码函数来选择 1 到 100 之间的一个随机数,不如编写函数来选择 1 到某个整数 maxval 之

从写一个函数来选择一个随机数字来开始“猜数字”游戏。在编写函数时,优秀的程序员会尽量使它们具有灵活性,这样他们就可以重用它们来解决略有不同的问题。因此,与其硬编码函数来选择 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”。循环继续,直到用户的猜测与随机数相同。

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐