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

