當你學習一門新的程式設計語言時,這個“猜數字”遊戲是一個很好的入門程式。下面是如何用 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免費分享):