C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲的示例代碼
一、猜數(shù)字小游戲
使用循環(huán)語(yǔ)句、分支語(yǔ)句和函數(shù)實(shí)現(xiàn),游戲內(nèi)容為輸入0~100之間的數(shù)字,根據(jù)提示信息判斷自己猜的數(shù)字和隨機(jī)生成的數(shù)字哪個(gè)大哪個(gè)小,并根據(jù)提示信息輸入合適的數(shù)字以便更快的通過(guò)游戲。
1.演示效果

2.完整代碼
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void menu()//菜單
{
printf("************************\n");
printf("**歡迎來(lái)到猜數(shù)字小游戲**\n");
printf("**** 1.開(kāi)始游戲 *****\n");
printf("**** 2.結(jié)束游戲 *****\n");
printf("************************\n");
}
void game()
{
int ret = rand() % 100 + 1;//生成0~100之間的隨機(jī)數(shù)
int guess = 0;
int i = 0;
while (guess != ret)//當(dāng)猜的數(shù)字和rand隨機(jī)生成的數(shù)字相同時(shí),循環(huán)終止
{
printf("請(qǐng)輸入你要猜的數(shù)字(0~100):");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了!\n");
}
else if (guess < ret) {
printf("猜小了!\n");
}
else
{
printf("恭喜你,猜對(duì)了!\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));//生成不同的數(shù)用來(lái)初始化rand的初始值
int input = 0;
do {
menu();//菜單函數(shù)
printf("請(qǐng)選擇>:");
scanf("%d", &input);
switch (input)
{
case 1:
game();//調(diào)用game()函數(shù)
break;
case 2:
printf("游戲結(jié)束!");
break;
default:
printf("選擇錯(cuò)誤,請(qǐng)重新選擇!\n");
break;
}
} while (input != 2);
return 0;
}
二、代碼解析
1.游戲主體函數(shù)
void game()
{
int ret = rand() % 100 + 1;//生成0~100之間的隨機(jī)數(shù)
int guess = 0;
int i = 0;
while (guess != ret)//當(dāng)猜的數(shù)字和rand隨機(jī)生成的數(shù)字相同時(shí),循環(huán)終止
{
printf("請(qǐng)輸入你要猜的數(shù)字(0~100):");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了!\n");
}
else if (guess < ret) {
printf("猜小了!\n");
}
else
{
printf("恭喜你,猜對(duì)了!\n");
break;
}
}
}
在C語(yǔ)言中,rand函數(shù)可以用來(lái)產(chǎn)生隨機(jī)數(shù),但并不是真正意義上的隨機(jī)數(shù),它是返回介于0~RAND_MAX之間的偽隨機(jī)整數(shù),但是在系統(tǒng)正常使用的情況下,產(chǎn)生的偽隨機(jī)整數(shù)是固定的。為了初始化的值不同,C語(yǔ)言提供了srand函數(shù)。
2.菜單函數(shù)
void menu()//菜單
{
printf("************************\n");
printf("**歡迎來(lái)到猜數(shù)字小游戲**\n");
printf("**** 1.開(kāi)始游戲 *****\n");
printf("**** 2.結(jié)束游戲 *****\n");
printf("************************\n");
}
3.頭文件以及主函數(shù)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
srand((unsigned int)time(NULL));//生成不同的數(shù)用來(lái)初始化rand的初始值
int input = 0;
do {
menu();//菜單函數(shù)
printf("請(qǐng)選擇>:");
scanf("%d", &input);
switch (input)
{
case 1:
game();//調(diào)用game()函數(shù)
break;
case 2:
printf("游戲結(jié)束!");
break;
default:
printf("選擇錯(cuò)誤,請(qǐng)重新選擇!\n");
break;
}
} while (input != 2);
return 0;
}
srand((unsigned int)time(NULL))中調(diào)用srand函數(shù)需要頭文件<stdlib.h>,同時(shí)使用系統(tǒng)時(shí)間來(lái)初始化需要包含頭文件<time.h>,srand函數(shù)一般使用時(shí)間戳,采用系統(tǒng)時(shí)間來(lái)初始化,使用time函數(shù)來(lái)獲得系統(tǒng)時(shí)間,然后將time_t型數(shù)據(jù)轉(zhuǎn)化為(unsigned)型再傳給srand函數(shù)。這樣使用rand時(shí),每次產(chǎn)生的隨機(jī)數(shù)都不相同。
以上就是C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言猜數(shù)字游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)經(jīng)典24點(diǎn)紙牌益智游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)經(jīng)典24點(diǎn)紙牌益智游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
解析內(nèi)存對(duì)齊 Data alignment: Straighten up and fly right的詳解
對(duì)于所有直接操作內(nèi)存的程序員來(lái)說(shuō),數(shù)據(jù)對(duì)齊都是很重要的問(wèn)題.數(shù)據(jù)對(duì)齊對(duì)你的程序的表現(xiàn)甚至能否正常運(yùn)行都會(huì)產(chǎn)生影響2013-05-05
C++中四種對(duì)象生存期和作用域以及static的用法總結(jié)分析
以下是對(duì)C++中四種對(duì)象生存期和作用域以及static的用法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09
QT編寫(xiě)地圖實(shí)現(xiàn)設(shè)備點(diǎn)位的示例代碼
在地圖應(yīng)用的相關(guān)項(xiàng)目中,在地圖上標(biāo)識(shí)一些設(shè)備點(diǎn),并對(duì)點(diǎn)進(jìn)行交互這個(gè)功能用的最多的,于是需要一套機(jī)制可以動(dòng)態(tài)的添加、刪除、清空、重置。本文將詳細(xì)介紹這些功能如何實(shí)現(xiàn),需要的可以參考一下2022-01-01
C++逆向分析移除鏈表元素實(shí)現(xiàn)方法詳解
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(203.移除鏈表元素),本篇文章通過(guò)逆向分析的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2022-11-11
OpenCV 視頻中火焰檢測(cè)識(shí)別實(shí)踐
本文主要介紹了OpenCV 視頻中火焰檢測(cè)識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

