用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字
如何用C語(yǔ)言寫(xiě)出一個(gè)猜數(shù)字游戲,供大家參考,具體內(nèi)容如下
首先調(diào)用頭文件
/***調(diào)用頭文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***調(diào)用頭文件***/
再者定義函數(shù)
/**定義函數(shù)**/ void start();//開(kāi)始函數(shù) void low();//低級(jí) void mediate();//中級(jí) void high();//高級(jí) void res();//重啟函數(shù) void chooce();//選擇函數(shù) void help();//查看幫助 void name_set();//姓名詢(xún)問(wèn) int main(void);//主函數(shù) /**定義函數(shù)**/
start()函數(shù),主要是進(jìn)行選擇進(jìn)入,代碼如下
void start(){//開(kāi)始函數(shù) printf("***************************\n"); printf("* 1.進(jìn)行猜數(shù)字 *\n"); printf("* 2.退出猜數(shù)字 *\n"); printf("* 3.選擇 幫助 *\n"); printf("***************************\n\n"); /*設(shè)置選擇*/ int c; printf("請(qǐng)選擇:"); scanf("%d",&c); switch(c){ case 1: chooce(); break; case 2: printf("謝謝您!\n"); break; exit(0); case 3: help(); break; default: printf("請(qǐng)輸入正確的數(shù)字:\n"); break; } /*設(shè)置選擇*/ }
name_set()函數(shù)主要是詢(xún)問(wèn)一下游玩者的名字,再輸出一下名字,畢竟是個(gè)游戲供來(lái)娛樂(lè)嘛
void name_set(){//問(wèn)候函數(shù) char name[10]; printf("您好,您叫什么?輸入您的姓名:"); gets(name); printf("%s,歡迎來(lái)到猜數(shù)字游戲\n\n",name); }
help()函數(shù)純純就是提示幫助
void help(){//幫助函數(shù) printf("\t1.低級(jí)范圍在300以?xún)?nèi),共5次機(jī)會(huì)\n"); printf("\t2.中級(jí)范圍在300-1000以?xún)?nèi),共10次機(jī)會(huì)\n"); printf("\t3.高級(jí)在1000以上,共20次機(jī)會(huì)\n"); start();//返回開(kāi)始函數(shù),并不運(yùn)行問(wèn)候函數(shù) }
chooce()函數(shù),主要是進(jìn)行選擇游戲等級(jí)
void chooce(){//選擇等級(jí) printf("***************************\n"); printf("* 1.選擇低級(jí) *\n"); printf("* 2.選擇中級(jí) *\n"); printf("* 3.選擇高級(jí) *\n"); printf("***************************\n"); int dj; printf("請(qǐng)選擇等級(jí):"); scanf("%d",&dj);//設(shè)置等級(jí) /*判定選擇等級(jí)*/ if(dj==1){ low(); } else if(dj==2){ mediate(); } else if(dj==3){ high(); } else{ printf("請(qǐng)輸入正確的數(shù)字,我們即將返回程序!\n"); chooce(); } /*判定選擇等級(jí)*/ }
接下來(lái)就是主要的函數(shù)了,是游戲內(nèi)容和邏輯
簡(jiǎn)單來(lái)說(shuō),低級(jí)中級(jí)高級(jí)的代碼邏輯是一樣的,都是運(yùn)用stdlib.h里的rand()函數(shù)抽取隨機(jī)數(shù)值,然后與輸入的guess對(duì)比,可以看出來(lái),在while里運(yùn)行,輸入一次做一次對(duì)比,如果正確times+1并結(jié)束循環(huán),如果不正確,提示錯(cuò)誤并返回while運(yùn)行,直到times超過(guò)那個(gè)數(shù)值,跳出循環(huán)。
在下面可以看一下基本模板(里面數(shù)值用拼音代替)
void dengji(){ int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(//表達(dá)式代取數(shù)值對(duì)比){ printf("太大了建議您玩中級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); low(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<n){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<n){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } }
然后可以看一下代碼
void low(){//低級(jí) int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(sb>300){ printf("太大了建議您玩中級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); low(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<5){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<5){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } } void mediate(){//中級(jí) int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(sb<300){ printf("太小了建議您玩低級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); mediate(); } else if(sb>1000){ printf("太大了建議您玩高級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); mediate(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<10){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<10){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } } void high(){//高級(jí) int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(sb<1000){ printf("太小了,建議您退出游戲!\n"); high(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<20){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<20){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } }
res()函數(shù)可以理解為詢(xún)問(wèn)返回游戲,我是在return games的基礎(chǔ)上縮寫(xiě)的,畢竟游戲不能只有一次,在里面做一個(gè)邏輯運(yùn)算,并返回其他函數(shù)
void res(){//詢(xún)問(wèn)是否重新再來(lái) printf("\n還要在玩一遍嗎?\n1.是的 2.退出。"); int s; scanf("%d",&s); /*進(jìn)行選擇*/ if(s==1){ chooce(); } else if(s==2){ printf("謝謝您!\n"); exit(0);//退出程序 } else{ printf("請(qǐng)輸入正確的數(shù)字!\n"); res(); } /*進(jìn)行選擇*/ return res();//將res函數(shù)返回main函數(shù) }
main()函數(shù)主要是做了一個(gè)調(diào)用,調(diào)用前面start,name_set,chooce,res等函數(shù)
int main(){ name_set();//問(wèn)候 start();//執(zhí)行選擇 int yes=1;//設(shè)置重啟值,調(diào)用res函數(shù) if(yes==1){ res(); } }
到最后可以看一下所有代碼
/***調(diào)用頭文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***調(diào)用頭文件***/ /**定義函數(shù)**/ void start();//開(kāi)始函數(shù) void low();//低級(jí) void mediate();//中級(jí) void high();//高級(jí) void res();//重啟函數(shù) void chooce();//選擇函數(shù) void help();//查看幫助 void name_set();//姓名詢(xún)問(wèn) int main(void);//主函數(shù) /**定義函數(shù)**/ void start(){//開(kāi)始函數(shù) printf("***************************\n"); printf("* 1.進(jìn)行猜數(shù)字 *\n"); printf("* 2.退出猜數(shù)字 *\n"); printf("* 3.選擇 幫助 *\n"); printf("***************************\n\n"); /*設(shè)置選擇*/ int c; printf("請(qǐng)選擇:"); scanf("%d",&c); switch(c){ case 1: chooce(); break; case 2: printf("謝謝您!\n"); break; exit(0); case 3: help(); break; default: printf("請(qǐng)輸入正確的數(shù)字:\n"); break; } /*設(shè)置選擇*/ } void name_set(){//問(wèn)候函數(shù) char name[10]; printf("您好,您叫什么?輸入您的姓名:"); gets(name); printf("%s,歡迎來(lái)到猜數(shù)字游戲\n\n",name); } void help(){//幫助函數(shù) printf("\t1.低級(jí)范圍在300以?xún)?nèi),共5次機(jī)會(huì)\n"); printf("\t2.中級(jí)范圍在300-1000以?xún)?nèi),共10次機(jī)會(huì)\n"); printf("\t3.高級(jí)在1000以上,共20次機(jī)會(huì)\n"); start();//返回開(kāi)始函數(shù),并不運(yùn)行問(wèn)候函數(shù) } void chooce(){//選擇等級(jí) printf("***************************\n"); printf("* 1.選擇低級(jí) *\n"); printf("* 2.選擇中級(jí) *\n"); printf("* 3.選擇高級(jí) *\n"); printf("***************************\n"); int dj; printf("請(qǐng)選擇等級(jí):"); scanf("%d",&dj);//設(shè)置等級(jí) /*判定選擇等級(jí)*/ if(dj==1){ low(); } else if(dj==2){ mediate(); } else if(dj==3){ high(); } else{ printf("請(qǐng)輸入正確的數(shù)字,我們即將返回程序!\n"); chooce(); } /*判定選擇等級(jí)*/ } void low(){//低級(jí) int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(sb>300){ printf("太大了建議您玩中級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); low(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<5){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<5){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } } void mediate(){//中級(jí) int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(sb<300){ printf("太小了建議您玩低級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); mediate(); } else if(sb>1000){ printf("太大了建議您玩高級(jí)!\n"); printf("請(qǐng)?jiān)俅屋斎隲n"); mediate(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<10){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<10){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } } void high(){//高級(jí) int sb; srand(time(NULL));//調(diào)用rand函數(shù) printf("輸入一個(gè)范圍整數(shù):"); scanf("%d",&sb);//獲取范圍值 if(sb<1000){ printf("太小了,建議您退出游戲!\n"); high(); } int num=rand() % ("%d"+1,sb);//獲取隨機(jī)整數(shù) int times=0;//設(shè)置初始次數(shù) while(times<20){//循環(huán)判定 int guess; printf("輸入數(shù)字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數(shù)增加 /***與隨機(jī)值比較***/ if(guess==num){ break;//正確結(jié)束循環(huán) } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***與隨機(jī)值比較***/ } if(times<20){ printf("猜對(duì)了!\n");//正確結(jié)果 printf("您一共猜了%d次",times); } else{ printf("對(duì)不起,猜錯(cuò)了!數(shù)字是%d。\n",num); printf("您一共猜了%d次\n",times);//錯(cuò)誤結(jié)果 } } void res(){//詢(xún)問(wèn)是否重新再來(lái) printf("\n還要在玩一遍嗎?\n1.是的 2.退出。"); int s; scanf("%d",&s); /*進(jìn)行選擇*/ if(s==1){ chooce(); } else if(s==2){ printf("謝謝您!\n"); exit(0);//退出程序 } else{ printf("請(qǐng)輸入正確的數(shù)字!\n"); res(); } /*進(jìn)行選擇*/ return res();//將res函數(shù)返回main函數(shù) } int main(){ name_set();//問(wèn)候 start();//執(zhí)行選擇 int yes=1;//設(shè)置重啟值,調(diào)用res函數(shù) if(yes==1){ res(); } }
這里函數(shù)的順序可以打亂,因?yàn)槲覀冊(cè)谇懊媸锹暶鬟^(guò)一遍函數(shù)的,并不需要函數(shù)的順序,因?yàn)椴宦暶鞯脑?huà),很難去找到想用的函數(shù)!??!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼
本文介紹了一個(gè)在C++中保存不定長(zhǎng)二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個(gè)結(jié)構(gòu)中,我們使用了一個(gè)含有指針和數(shù)組長(zhǎng)度的結(jié)構(gòu)體,用這樣的一個(gè)結(jié)構(gòu)體構(gòu)造一個(gè)結(jié)構(gòu)體數(shù)組,用于存儲(chǔ)每一個(gè)不定長(zhǎng)的數(shù)組,感興趣的朋友一起看看吧2024-03-03C語(yǔ)言實(shí)現(xiàn)三子棋游戲的示例代碼
今天我們將會(huì)用C語(yǔ)言實(shí)現(xiàn)三子棋。所謂三子棋,就是三行三列的棋盤(pán),玩家可以和電腦下棋,率先連成三個(gè)的獲勝。話(huà)不多說(shuō),我們開(kāi)始吧2022-10-10C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02