C語言代碼實現猜數字遊戲
前言:
本文主要講解以c語言編寫猜數字遊戲,目的是介紹C語言中的循環和分支的具體用法。
一:猜數字遊戲基本介紹&對程序預期
.猜數字遊戲,顧名思義,就是系統隨機給出一個數字,玩傢對這個數字進行猜測,如果玩傢猜測的數字大於給出的數字,則系統會提示猜大瞭,如果玩傢猜測的數字小於給出的數字,則系統會提示猜小瞭,這樣逐步縮小猜測范圍,直到玩傢猜對為止。
2.程序預期:猜數字結束後,玩傢如果猜對瞭的話可以繼續遊戲,也可以退出遊戲
二:程序設計思路
1.總體思路:
首先,實現遊戲功能必須要有一個菜單來提示玩傢如何進行操作。其次,為瞭代碼具有可讀性,可以將遊戲部分函數和菜單部分函數作為兩個子函數,然後在主函數調用他們。然後我們為瞭實現玩傢可以多次遊戲可以使用循環。
綜上所述,我們應該設計兩個子函數:菜單函數和遊戲函數。一個主函數
2.菜單部分函數:
菜單部分函數
void menu() { printf("***********************************************\n"); printf("*************************1play*****************\n"); printf("*************************0exit*****************\n"); printf("***********************************************\n"); }
菜單函數設計相對簡單,隻是為瞭提示玩傢如何操作
3.遊戲部分函數
void game() { srand((unsigned int)time(NULL)); int ret = rand() % 100 + 1; while (1) { printf("猜數字\n"); int guess = 0; scanf("%d", &guess); if (guess > ret) { printf("猜大瞭\n"); } else if (guess < ret) { printf("猜小瞭\n"); } else { printf("猜對瞭\n"); break; } } }
①在遊戲函數部分,首先要生成隨機數,生成隨機數的方法如下:
C語言中提供瞭生成隨機數的函數rand函數
rand函數會返回一個0到RAND-MAX的隨機整數,使用這個函數需要包含頭文件<stdlib.h>
但是rand函數每次生成的隨機數相同,所以隻用rand函數不夠,所以要使用srand()函數增加隨機性
後一句中說明在使用rand函數前要定義一個srand()函數
如畫線句所示,srand函數的作用就是一個隨機數的生成的種子。
而且需要一個無符號整型,在srand函數中括號輸入一個隨機數字即可生成隨機數,時間正是一個一直在變化的數字。
在這裡提出一個時間戳的概念:時間戳是指格林威治時間1970年01月01日00時00分00秒 (北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
因為srand需要的參數是無符號類型,所以對time進行強制類型轉換。time後不需要參數,所以給他一個空指針。
使用srand((unsigned int)time(NULL))
輸入time返回一個時間戳
需要一個頭文件<time.h>
因為給出的隨機數范圍太大,所以需要限定隨機數范圍
如下:int ret = rand()%100+1,將隨機數限定在0-100區間,便於猜測
②:猜數字環節
利用while循環來逐步縮小猜測范圍,當猜測的數字等於隨機數時提示”猜對瞭“。
4.主函數部分
int main() { int input = 0; do { menu(); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("輸入錯誤,請重新輸入"); } } while (input); return 0; }
主函數中使用瞭switch語句,和do-while語句
主要目的是為瞭玩傢選擇是否進入遊戲
5.代碼主體
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<time.h> void menu() { printf("***********************************************\n"); printf("*************************1play*****************\n"); printf("*************************0exit*****************\n"); printf("***********************************************\n"); } void game() { srand((unsigned int)time(NULL)); int ret = rand() % 100 + 1; while (1) { printf("猜數字\n"); int guess = 0; scanf("%d", &guess); if (guess > ret) { printf("猜大瞭\n"); } else if (guess < ret) { printf("猜小瞭\n"); } else { printf("猜對瞭\n"); break; } } } int main() { int input = 0; do { menu(); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("輸入錯誤,請重新輸入"); } } while (input); return 0; }
三:總結
此程序主要為瞭熟悉循環和分支的具體用法,並且學會利用時間戳和rand函數生成隨機數。
到此這篇關於C語言代碼實現猜數字遊戲的文章就介紹到這瞭,更多相關C語言猜數字內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!