基於C語言實現猜數字遊戲
前言
系統生成一個【1,100】之間數字,用戶隨便輸入一個整數,如果用戶輸入的數字比系統生成的數字小,提示“猜低瞭”,如果用戶輸入的數字比系統生成的數字大提示猜高瞭,如果相同,提示猜對瞭。
一、先生成一個【1,100】的隨機整數
C語言的標準庫中已經包含瞭很多現成的功能,rand可以生成一個隨機整數,可以查閱cplusplus文檔。瀏覽器輸入www.cplusplus.com。cstdlib這是C++風格的寫法,stdlib.h是C語言風格的寫法,C++也可以用stdlib.h.C語言中函數參數如果沒有,可以直接寫(),也可以寫作(void),但是返回值不可忽略void,一些老的編譯器例如VC6,函數的返回值也可以忽略,如果省略返回值,表示返回值類型為int。
由上述文章可以看出,我們要生成【1,100】的隨機整數,是rand()%100+1
註意:這裡提示大傢:rand這個函數以後在工作中,要謹慎使用,多線程,rand函數線程不安全,實際開發中如果對於隨機數要求的不嚴格的話,就可以有很多中代替rand的方案來實現,例如,可以使用某個變量的地址來代替。
二、提示用戶進行交互
加上一個和用戶交互的菜單。代碼如下:
int menu() { printf("*********************\n"); printf("歡迎來到猜數字遊戲!\n"); printf("1.開始遊戲\n"); printf("2.退出遊戲\n"); printf("請輸入您的選擇\n"); printf("*********************\n"); int choice = 0; scanf("%d", &choice); return choice; }
三、偽隨機和真隨機
偽隨機數是通過一定算法獲得一個隨機的值,並不是真的隨機。
真隨機數是伴隨著物理實驗的,比如:拋硬幣、擲骰子、電子元件的噪音、核裂變等,他的結果符合三大特性的。是真實的隨機數。
當我們就按rand來執行程序時,會發現每次執行的隨機數都是一樣的,這就是偽隨機。那麼如何生成真正的隨機數呢,我們可以使用srand。隻需要讓每次執行程序的時候,設置的隨機種子不一樣即可,我們就會想到時間,時間是永遠在變化的。計算機裡表示時間,正是通過整數的方式來表示的,叫做時間戳,是很重要的。時間戳是以1970年1月1日0時0分0秒為基準時刻,計算當前時刻和基準時刻的秒數之差。
time(0)獲取時間戳,需要包含頭文件time.h。time函數返回類型叫time-t,time本質上是一個unsigned long long。所以會需要強制類型轉換,把time-t結果強制轉換為unsigned int。(這樣做也許會丟數據,目的是為瞭讓編譯器不必提示這個警告)。
srand((unsigned int)time(0));
四、整體程序實現
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> int menu() { printf("*********************\n"); printf("歡迎來到猜數字遊戲!\n"); printf("1.開始遊戲\n"); printf("2.退出遊戲\n"); printf("請輸入您的選擇\n"); printf("*********************\n"); int choice = 0; scanf("%d", &choice); return choice; } void game() { printf("開始一局猜數字遊戲\n"); int toGuess = rand() % 100 + 1; while (1) { int inputNum = 0; printf("請猜一個1-100的整數\n"); scanf("%d", &inputNum); if (inputNum > toGuess) { printf("猜高瞭!\n"); } else if (inputNum < toGuess) { printf("猜低瞭!\n"); } else { printf("猜對瞭!\n"); break; } } } int main() { srand((unsigned int)time(0)); int choice = menu(); while (1) { if (choice == 1) { game(); break; } else if (choice == 0) { printf("goodbye!\n"); break; } else { printf("您的輸入有誤!\n"); } } system("pause"); return 0; } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。