學習 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免費分享):


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM