用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字
如何用C語(yǔ)言寫出一個(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();//開始函數(shù) void low();//低級(jí) void mediate();//中級(jí) void high();//高級(jí) void res();//重啟函數(shù) void chooce();//選擇函數(shù) void help();//查看幫助 void name_set();//姓名詢問(wèn) 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("請(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ù)主要是詢問(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以內(nèi),共5次機(jī)會(huì)\n");
printf("\t2.中級(jí)范圍在300-1000以內(nèi),共10次機(jī)會(huì)\n");
printf("\t3.高級(jí)在1000以上,共20次機(jī)會(huì)\n");
start();//返回開始函數(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ù)可以理解為詢問(wèn)返回游戲,我是在return games的基礎(chǔ)上縮寫的,畢竟游戲不能只有一次,在里面做一個(gè)邏輯運(yùn)算,并返回其他函數(shù)
void res(){//詢問(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();//開始函數(shù)
void low();//低級(jí)
void mediate();//中級(jí)
void high();//高級(jí)
void res();//重啟函數(shù)
void chooce();//選擇函數(shù)
void help();//查看幫助
void name_set();//姓名詢問(wèn)
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("請(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以內(nèi),共5次機(jī)會(huì)\n");
printf("\t2.中級(jí)范圍在300-1000以內(nèi),共10次機(jī)會(huì)\n");
printf("\t3.高級(jí)在1000以上,共20次機(jī)會(huì)\n");
start();//返回開始函數(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(){//詢問(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)椴宦暶鞯脑?,很難去找到想用的函數(shù)?。。?/p>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)學(xué)生籍貫信息記錄簿
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生籍貫信息記錄簿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C語(yǔ)言詳細(xì)分析講解關(guān)鍵字goto與void的作用
我們?cè)贑語(yǔ)言中經(jīng)常會(huì)見到void,也會(huì)偶爾見到goto,那么C語(yǔ)言中既然有g(shù)oto,為什么我們?cè)诖a中見的很少呢?在以前很多的項(xiàng)目經(jīng)驗(yàn)中,我們得到這樣一條潛規(guī)則:一般項(xiàng)目都是禁用goto的,程序質(zhì)量與goto的出現(xiàn)次數(shù)成反比。自后也就造成了我們一般不會(huì)使用goto2022-04-04
C/C++細(xì)數(shù)宏與函數(shù)有那些區(qū)別
在C程序中,可以用宏代碼提高執(zhí)行效率。宏代碼本身不是函數(shù),但使用起來(lái)象函數(shù)。預(yù)處理器用復(fù)制宏代碼的方式代替函數(shù)調(diào)用,省去了參數(shù)壓棧、生成匯編語(yǔ)言的CALL調(diào)用、返回參數(shù)、執(zhí)行return等過(guò)程,從而提高了速度2022-10-10
C語(yǔ)言實(shí)現(xiàn)求解最小公倍數(shù)的算法示例
這篇文章主要為大家介紹了C語(yǔ)言如何實(shí)現(xiàn)求解任意兩個(gè)正整數(shù)的最小公倍數(shù),文中采用了窮舉法和定理法。感興趣的小伙伴快來(lái)跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
C語(yǔ)言中使用快速排序算法對(duì)元素排序的實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言中使用快速排序算法對(duì)元素排序的實(shí)例詳解,文中細(xì)分了幾個(gè)情況來(lái)舉例,在注釋里有說(shuō)明,需要的朋友可以參考下2016-04-04

