最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言編寫猜數(shù)游戲

 更新時間:2021年09月15日 11:08:09   作者:vbnetcx  
這篇文章主要為大家詳細介紹了C語言編寫猜數(shù)游戲,可以自定義猜數(shù)范圍和機會次數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

C語言寫猜數(shù)游戲,供大家參考,具體內(nèi)容如下

這篇文章是給學(xué)完并學(xué)懂了C語言的分支(選擇和循環(huán))結(jié)構(gòu)的朋友看的。

要做一個游戲或者程序先要想好有那些要求,以下是我認為一個猜數(shù)游戲必帶的要求:

1、自定義猜數(shù)范圍的起點和終點以及機會次數(shù)。
2、生成一個隨機數(shù)。
3、如果輸入猜入的數(shù)和生成的隨機數(shù)相等,就提示猜對了并退出主函數(shù),如果輸入猜的數(shù)比生成的隨機數(shù)大,就提示猜大了,如果輸入猜的數(shù)比生成的隨機數(shù)小,就提示猜小了,沒猜對一次就減一次機會。
4、如果機會為0了,就提示沒有機會了并輸出隨機數(shù)。

自定義猜數(shù)范圍的起點和終點以及機會次數(shù)

先來寫自定義猜數(shù)范圍的起點和終點以及機會次數(shù),代碼如下:

int start,end,opportunity;//范圍起點 范圍終點 機會次數(shù)
printf("請輸入猜數(shù)游戲的范圍的起點:");
scanf("%d",&start);
printf("請輸入猜數(shù)游戲的范圍的終點:");
scanf("%d",&end);
printf("請輸入猜數(shù)游戲的機會次數(shù):");
scanf("%d",&opportunity);

生成一個隨機數(shù)

生成一個隨機數(shù)可以用srand()函數(shù)和rand()函數(shù),srand()函數(shù)作用大致是每次運行生成的隨機數(shù)都不同。rand()函數(shù)作用是生成并返回一個隨機數(shù)。代碼如下:

int random;//隨機數(shù)
srand((unsigned)time(NULL));//每次運行生成的隨機數(shù)都不同
random=rand();//默認隨機數(shù)的范圍是0~32767

那么如何生成我們輸入的起點和終點那個范圍呢,代碼如下:

int random;//隨機數(shù)
srand((unsigned)time(NULL));//每次運行生成的隨機數(shù)都不同
random=rand()%(end-start)+end;//生成的隨機數(shù)余(end-start)的結(jié)果就是一個不大于(end-start)的數(shù),最后加上start之后就得到了

一個不小于start并且不大于end的數(shù),就可以控制范圍了

srand()函數(shù)

srand()函數(shù)是隨機數(shù)發(fā)生器的初始化函數(shù),函數(shù)原型為:void srand(unsigned seed);,所在頭文件為:#include <stdlib.h>。

它會初始化并提供一個隨機種子,這個種子會對應(yīng)一個隨機數(shù),如果使用相同的種子后面的rand()函數(shù)會出現(xiàn)一樣的隨機數(shù),比如:srand(1);,直接使用1來初始化種子。不過為了防止隨機數(shù)每次重復(fù),常常使用系統(tǒng)時間來初始化,即使用time函數(shù)來獲得系統(tǒng)時間,它的返回值為從00:00:00GMT,January1,1970 到現(xiàn)在所持續(xù)的秒數(shù),然后將time_t型數(shù)據(jù)轉(zhuǎn)化為(unsigned)型再傳給srand函數(shù),即:srand((unsigned)time(&t));,還有一個經(jīng)常用法,不需要定義time_t型t變量,即: srand((unsigned)time(NULL)); 直接傳入一個空指針,因為你的程序中往往并不需要經(jīng)過參數(shù)獲得的數(shù)據(jù)。

其實計算機并不能產(chǎn)生真正的隨機數(shù),而是已經(jīng)編寫好的一些無規(guī)則排列的數(shù)字存儲在電腦里,把這些數(shù)字劃分為若干相等的N份,并為每份加上一個編號用srand()函數(shù)獲取這個編號,然后rand()就按順序獲取這些數(shù)字,當srand()的參數(shù)值固定的時候,rand()獲得的數(shù)也是固定的,所以一般srand的參數(shù)用time(NULL),因為系統(tǒng)的時間一直在變,所以rand()獲得的數(shù),也就一直在變,相當于是隨機數(shù)了。只要用戶或第三方不設(shè)置隨機種子,那么在默認情況下隨機種子來自系統(tǒng)時鐘。如果想在一個程序中生成隨機數(shù)序列,需要至多在生成隨機數(shù)之前設(shè)置一次隨機種子。 即:只需在主程序開始處調(diào)用srand((unsigned)time(NULL)); 后面直接用rand就可以了。不要在for等循環(huán)放置srand((unsigned)time(NULL));

rand()函數(shù)

rand()函數(shù)作用是生成并返回一個隨機數(shù),函數(shù)原型為:int rand(void);,所在頭文件為:#include <stdlib.h>。

rand()函數(shù)每次調(diào)用前都會查詢是否調(diào)用過srand(seed),是否給seed設(shè)定了一個值,如果有那么它會自動調(diào)用srand(seed)一次來初始化它的起始值。若之前沒有調(diào)用srand(seed),那么系統(tǒng)會自動給seed賦初始值,即srand(1)自動調(diào)用它一次。

總結(jié)以上代碼

目前為止,我們做了自定義猜數(shù)范圍的起點和終點以及機會次數(shù)、生成一個隨機數(shù),目前全部代碼如下:

#include <stdio.h>
#include <stdlib.h>//srand()函數(shù)和rand()函數(shù)頭文件
#include <time.h》>//time()函數(shù)的頭文件
int main()
{
    int start,end,opportunity,random;//范圍起點 范圍終點 機會次數(shù) 隨機數(shù)
    srand((unsigned)time(NULL));//每次運行生成的隨機數(shù)都不同
    printf("請輸入猜數(shù)游戲的范圍的起點:");
    scanf("%d",&start);
    printf("請輸入猜數(shù)游戲的范圍的終點:");
    scanf("%d",&end);
    printf("請輸入猜數(shù)游戲的機會次數(shù):");
    scanf("%d",&opportunity);
    random=rand()%(end-start)+start;//生成的隨機數(shù)余(end-start)的結(jié)果就是一個不大于(end-start)的數(shù),最后加上start之后就得到了一個不小于start并且不大于end的數(shù),就可以控制范圍了
    return 0;
}

比較輸入的數(shù)與隨機數(shù)的大小來做相應(yīng)的事

如果輸入猜入的數(shù)和生成的隨機數(shù)相等,就提示猜對了并退出主函數(shù),如果輸入猜的數(shù)比生成的隨機數(shù)大,就提示猜大了,如果輸入猜的數(shù)比生成的隨機數(shù)小,就提示猜小了,沒猜對一次就減一次機會,代碼如下:

while(opportunity--)//只要沒有猜對一次,機會就少一次
{
    scanf("%d",&guess);//輸入需要猜的數(shù)
    if(guess==random)//當猜的數(shù)和隨機數(shù)相等,說明猜對了
    {
        printf("猜對了!\n");//提示猜對了
        return 0;//直接退出函數(shù)
    }
    else if(guess>random)//當猜的數(shù)比隨機數(shù)大
        printf("猜大了!剩余機會次數(shù)為%d次\n",opportunity);//提示猜大了和剩余機會次數(shù)
    else if(guess<random)//當猜的數(shù)比隨機數(shù)小
        printf("猜小了!剩余機會次數(shù)為%d次\n",opportunity);//提示猜小了和剩余機會次數(shù)
}
printf("沒有機會了,正確答案是%d",random);//沒有退出函數(shù)就說明機會用完了并且沒有猜對,就提示沒有機會了并揭曉答案

總結(jié)以上代碼

#include <stdio.h>
#include <stdlib.h>//srand()函數(shù)和rand()函數(shù)頭文件
#include <time.h>//time()函數(shù)的頭文件
int main()
{
    int start,end,opportunity,random,guess;//范圍起點 范圍終點 機會次數(shù) 隨機數(shù) 猜的數(shù)
    srand((unsigned)time(NULL));//每次運行生成的隨機數(shù)都不同
    printf("請輸入猜數(shù)游戲的范圍的起點:");
    scanf("%d",&start);
    printf("請輸入猜數(shù)游戲的范圍的終點:");
    scanf("%d",&end);
    printf("請輸入猜數(shù)游戲的機會次數(shù):");
    scanf("%d",&opportunity);
    random=rand()%(end-start)+start;//生成的隨機數(shù)余(end-start)的結(jié)果就是一個不大于(end-start)的數(shù),最后加上start之后就得到了一個不小于start并且不大于end的數(shù),就可以控制范圍了
    printf("請在%d到%d之內(nèi)猜數(shù)字,你有%d次機會:\n",start,end,opportunity);
    while(opportunity--)//只要沒有猜對一次,機會就少一次
    {
        scanf("%d",&guess);//輸入需要猜的數(shù)
        if(guess==random)//當猜的數(shù)和隨機數(shù)相等,說明猜對了
        {
            printf("猜對了!\n");//提示猜對了
            return 0;//直接退出函數(shù)
        }
        else if(guess>random)//當猜的數(shù)比隨機數(shù)大
            printf("猜大了!剩余機會次數(shù)為%d次\n",opportunity);//提示猜大了和剩余機會次數(shù)
        else if(guess<random)//當猜的數(shù)比隨機數(shù)小
            printf("猜小了!剩余機會次數(shù)為%d次\n",opportunity);//提示猜小了和剩余機會次數(shù)
    }
    printf("沒有機會了,正確答案是%d",random);//沒有退出函數(shù)就說明機會用完了并且沒有猜對,就提示沒有機會了并揭曉答案
    return 0;
}

測試代碼

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

荃湾区| 梁山县| 珠海市| 大丰市| 商丘市| 怀柔区| 科尔| 湾仔区| 黄陵县| 崇仁县| 石阡县| 视频| 寻乌县| 蓝田县| 保亭| 如皋市| 石嘴山市| 惠安县| 织金县| 晴隆县| 新平| 沂源县| 泰宁县| 伊宁市| 新晃| 昌都县| 吴忠市| 三原县| 玉山县| 永康市| 长丰县| 清苑县| 凤山县| 方城县| 崇明县| 桃园市| 加查县| 松江区| 芦溪县| 白玉县| 阿巴嘎旗|