用C語言實現猜數字
如何用C語言寫出一個猜數字遊戲,供大傢參考,具體內容如下
首先調用頭文件
/***調用頭文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***調用頭文件***/
再者定義函數
/**定義函數**/ void start();//開始函數 void low();//低級 void mediate();//中級 void high();//高級 void res();//重啟函數 void chooce();//選擇函數 void help();//查看幫助 void name_set();//姓名詢問 int main(void);//主函數 /**定義函數**/
start()函數,主要是進行選擇進入,代碼如下
void start(){//開始函數 printf("***************************\n"); printf("* 1.進行猜數字 *\n"); printf("* 2.退出猜數字 *\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("請輸入正確的數字:\n"); break; } /*設置選擇*/ }
name_set()函數主要是詢問一下遊玩者的名字,再輸出一下名字,畢竟是個遊戲供來娛樂嘛
void name_set(){//問候函數 char name[10]; printf("您好,您叫什麼?輸入您的姓名:"); gets(name); printf("%s,歡迎來到猜數字遊戲\n\n",name); }
help()函數純純就是提示幫助
void help(){//幫助函數 printf("\t1.低級范圍在300以內,共5次機會\n"); printf("\t2.中級范圍在300-1000以內,共10次機會\n"); printf("\t3.高級在1000以上,共20次機會\n"); start();//返回開始函數,並不運行問候函數 }
chooce()函數,主要是進行選擇遊戲等級
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("請輸入正確的數字,我們即將返回程序!\n"); chooce(); } /*判定選擇等級*/ }
接下來就是主要的函數瞭,是遊戲內容和邏輯
簡單來說,低級中級高級的代碼邏輯是一樣的,都是運用stdlib.h裡的rand()函數抽取隨機數值,然後與輸入的guess對比,可以看出來,在while裡運行,輸入一次做一次對比,如果正確times+1並結束循環,如果不正確,提示錯誤並返回while運行,直到times超過那個數值,跳出循環。
在下面可以看一下基本模板(裡面數值用拼音代替)
void dengji(){ int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); scanf("%d",&sb);//獲取范圍值 if(//表達式代取數值對比){ printf("太大瞭建議您玩中級!\n"); printf("請再次輸入\n"); low(); } int num=rand() % ("%d"+1,sb);//獲取隨機整數 int times=0;//設置初始次數 while(times<n){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<n){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%d。\n",num); printf("您一共猜瞭%d次\n",times);//錯誤結果 } }
然後可以看一下代碼
void low(){//低級 int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); scanf("%d",&sb);//獲取范圍值 if(sb>300){ printf("太大瞭建議您玩中級!\n"); printf("請再次輸入\n"); low(); } int num=rand() % ("%d"+1,sb);//獲取隨機整數 int times=0;//設置初始次數 while(times<5){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<5){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%d。\n",num); printf("您一共猜瞭%d次\n",times);//錯誤結果 } } void mediate(){//中級 int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); 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);//獲取隨機整數 int times=0;//設置初始次數 while(times<10){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<10){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%d。\n",num); printf("您一共猜瞭%d次\n",times);//錯誤結果 } } void high(){//高級 int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); scanf("%d",&sb);//獲取范圍值 if(sb<1000){ printf("太小瞭,建議您退出遊戲!\n"); high(); } int num=rand() % ("%d"+1,sb);//獲取隨機整數 int times=0;//設置初始次數 while(times<20){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<20){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%d。\n",num); printf("您一共猜瞭%d次\n",times);//錯誤結果 } }
res()函數可以理解為詢問返回遊戲,我是在return games的基礎上縮寫的,畢竟遊戲不能隻有一次,在裡面做一個邏輯運算,並返回其他函數
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("請輸入正確的數字!\n"); res(); } /*進行選擇*/ return res();//將res函數返回main函數 }
main()函數主要是做瞭一個調用,調用前面start,name_set,chooce,res等函數
int main(){ name_set();//問候 start();//執行選擇 int yes=1;//設置重啟值,調用res函數 if(yes==1){ res(); } }
到最後可以看一下所有代碼
/***調用頭文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***調用頭文件***/ /**定義函數**/ void start();//開始函數 void low();//低級 void mediate();//中級 void high();//高級 void res();//重啟函數 void chooce();//選擇函數 void help();//查看幫助 void name_set();//姓名詢問 int main(void);//主函數 /**定義函數**/ void start(){//開始函數 printf("***************************\n"); printf("* 1.進行猜數字 *\n"); printf("* 2.退出猜數字 *\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("請輸入正確的數字:\n"); break; } /*設置選擇*/ } void name_set(){//問候函數 char name[10]; printf("您好,您叫什麼?輸入您的姓名:"); gets(name); printf("%s,歡迎來到猜數字遊戲\n\n",name); } void help(){//幫助函數 printf("\t1.低級范圍在300以內,共5次機會\n"); printf("\t2.中級范圍在300-1000以內,共10次機會\n"); printf("\t3.高級在1000以上,共20次機會\n"); start();//返回開始函數,並不運行問候函數 } 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("請輸入正確的數字,我們即將返回程序!\n"); chooce(); } /*判定選擇等級*/ } void low(){//低級 int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); scanf("%d",&sb);//獲取范圍值 if(sb>300){ printf("太大瞭建議您玩中級!\n"); printf("請再次輸入\n"); low(); } int num=rand() % ("%d"+1,sb);//獲取隨機整數 int times=0;//設置初始次數 while(times<5){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<5){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%d。\n",num); printf("您一共猜瞭%d次\n",times);//錯誤結果 } } void mediate(){//中級 int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); 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);//獲取隨機整數 int times=0;//設置初始次數 while(times<10){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<10){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%d。\n",num); printf("您一共猜瞭%d次\n",times);//錯誤結果 } } void high(){//高級 int sb; srand(time(NULL));//調用rand函數 printf("輸入一個范圍整數:"); scanf("%d",&sb);//獲取范圍值 if(sb<1000){ printf("太小瞭,建議您退出遊戲!\n"); high(); } int num=rand() % ("%d"+1,sb);//獲取隨機整數 int times=0;//設置初始次數 while(times<20){//循環判定 int guess; printf("輸入數字:");//獲取輸入值 scanf("%d",&guess); times+=1;//次數增加 /***與隨機值比較***/ if(guess==num){ break;//正確結束循環 } else if(guess>num){ printf("猜大瞭!\n"); } else{ printf("猜小瞭!\n"); } /***與隨機值比較***/ } if(times<20){ printf("猜對瞭!\n");//正確結果 printf("您一共猜瞭%d次",times); } else{ printf("對不起,猜錯瞭!數字是%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("請輸入正確的數字!\n"); res(); } /*進行選擇*/ return res();//將res函數返回main函數 } int main(){ name_set();//問候 start();//執行選擇 int yes=1;//設置重啟值,調用res函數 if(yes==1){ res(); } }
這裡函數的順序可以打亂,因為我們在前面是聲明過一遍函數的,並不需要函數的順序,因為不聲明的話,很難去找到想用的函數!!!
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。