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