天花板編程手把手計劃-第1期-第3天-打卡

題目

把一個硬幣拋5次,打印出所有可能出現(xiàn)的情況覆享。1表示正面佳遂,0表示背面。比如:

全正面 1 1 1 1 1
全背面 0 0 0 0 0

解題思路

有 N 個硬幣撒顿;
先計算有多少種可能性 count丑罪;
然后把 count 轉(zhuǎn)化成二進制打印凤壁;
注意打印的時候把不足 N 位數(shù)的結(jié)果前補上0湊夠 N 位數(shù)吩屹;

源碼

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define COIN_NUMBER 5
void binary(int number);

void main()
{
    int i;
    int count;
    count = pow(2, COIN_NUMBER);//計算有多少種可能性
    for (i = 0; i < count; i++)//遍歷所有可能性的次數(shù)
    {
        binary(i);
    }
    getchar();
}

void binary(int number)//轉(zhuǎn)化為二進制打印
{
    char a[COIN_NUMBER + 1];//注意字符串結(jié)尾‘\0’,要多提供一位數(shù)組
    itoa(number, a, 2);
    printf("%05s", a);//  %05s拧抖,意思在不足五位的字符串前加0
    printf("\n");
}

執(zhí)行結(jié)果

coin.PNG

總結(jié)

這種算法提前人工計算了實驗結(jié)果是煤搜,利用了二進制偷懶了。不算是真的拋硬幣實驗唧席,只是打印結(jié)果剛好符合要求擦盾。


另一種全真模擬解題思路

利用rand函數(shù)返回的0和1當成拋硬幣的正反
建立一個二維數(shù)組保存實驗結(jié)果,每行記錄一個拋五次的結(jié)果且只記錄的不同的實驗結(jié)果

源碼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void playFiveCoin(char * fiveRlt);
void checkCondition(char ** coinCd, char * fiveRlt);

int g_mayNum = 0;//定義一個全局變量作計數(shù)淌哟,計數(shù)對象是“不同的實驗結(jié)果數(shù)”

void main()
{
    int i, j;
    int playNum, signPlayNum;
    char fiveResult[6];//由于字符串結(jié)尾要有‘\0’要多出一位數(shù)組存放它迹卢。故記錄拋5次銀幣的結(jié)果要要占用【6】個位置
    char coinCondition[100][6];//用于存儲不同的實驗結(jié)果,一行存儲一組實驗結(jié)果
    char * pCoin[100];
    char ** ppCoin;
    for (i = 0; i < 100; i++)
    {
        pCoin[i] = coinCondition[i];
    }
    ppCoin = pCoin;
    //以上聲明各種變量
    printf("每拋五個銀幣作為一組實驗徒仓,你想做多少組實驗?\n");
    printf("請輸入實驗組數(shù):");
    scanf("%d", &playNum);
    signPlayNum = playNum;
    while (playNum != 0)//當實驗次數(shù)沒有達到要求時
    {
        playFiveCoin(fiveResult);//拋五次銀幣
        checkCondition(ppCoin, fiveResult);//當拋硬幣實驗結(jié)果不在記錄中時腐碱,加入到記錄中
        playNum--;
    }
    for (i = 0; i < g_mayNum; i++)//打印實驗記錄
    {
        printf("%s\n", pCoin[i]);
    }
    printf("一共做了%d組實驗,得出%d組不同的結(jié)果\n", signPlayNum, g_mayNum);
    getchar();
    getchar();
}

void playFiveCoin(char * fiveRlt)//拋五次銀幣
{
    int i;
    char temp[2];
    for (i = 0; i < 5; i++)
    {
        itoa(rand() % 2, temp, 10);//拋一個銀幣掉弛,并將實驗結(jié)果進行類型保存到temp數(shù)組中
        fiveRlt[i] = temp[0];//記錄這一個銀幣的正反
    }
    fiveRlt[i] = '\0';//這組實驗做完了
}


void checkCondition(char ** coinCd, char * fiveRlt)//當拋硬幣實驗結(jié)果不在記錄中時症见,加入到記錄中
{
    int i, diff = 0;
    for (i = 0; i < g_mayNum; i++)//遍歷已有記錄
    {
        if (strcmp(*(coinCd + i), fiveRlt) != 0)//檢查是否在已有記錄
        {
            diff++;
        }
    }
    if (diff == g_mayNum)//如果不在的記錄
    {
        strcpy(*(coinCd + i), fiveRlt);//就進行實驗結(jié)果錄入
        g_mayNum++;//“不同的實驗結(jié)果數(shù)”增加一個
    }
}

執(zhí)行結(jié)果

拋硬幣100次
拋500次

總結(jié)

1.當用數(shù)組存放字符串時,要記得給結(jié)尾‘\0’分配位置狰晚,否則會造成溢出
2.rand函數(shù)不是真正的隨機筒饰,每次運行調(diào)用rand函數(shù)結(jié)果都是相同的
如在第一次運行第一次調(diào)用rand返回0,第二次調(diào)用返回1
那在第二次運行第一次調(diào)用rand必也返回0壁晒,第二次調(diào)用返回也是1
那在第三次瓷们、第N次運行的第一次調(diào)用rand必也返回0,第二次調(diào)用返回必定也是1
但在同一次運行中不同次的調(diào)用返回解果的確是個隨機值


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谬晕,隨后出現(xiàn)的幾起案子碘裕,更是在濱河造成了極大的恐慌,老刑警劉巖攒钳,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帮孔,死亡現(xiàn)場離奇詭異,居然都是意外死亡不撑,警方通過查閱死者的電腦和手機文兢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焕檬,“玉大人姆坚,你說我怎么就攤上這事∈涤蓿” “怎么了兼呵?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腊敲。 經(jīng)常有香客問我击喂,道長,這世上最難降的妖魔是什么碰辅? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任懂昂,我火速辦了婚禮,結(jié)果婚禮上乎赴,老公的妹妹穿的比我還像新娘忍法。我一直安慰自己潮尝,他們只是感情好榕吼,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著勉失,像睡著了一般羹蚣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乱凿,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天顽素,我揣著相機與錄音,去河邊找鬼徒蟆。 笑死胁出,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的段审。 我是一名探鬼主播全蝶,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抑淫?” 一聲冷哼從身側(cè)響起绷落,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎始苇,沒想到半個月后砌烁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡催式,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年函喉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荣月。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡函似,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喉童,到底是詐尸還是另有隱情撇寞,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布堂氯,位于F島的核電站蔑担,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咽白。R本人自食惡果不足惜啤握,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晶框。 院中可真熱鬧排抬,春花似錦、人聲如沸授段。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侵贵。三九已至届搁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窍育,已是汗流浹背卡睦。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留漱抓,地道東北人表锻。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像乞娄,于是被迫代替她去往敵國和親瞬逊。 傳聞我的和親對象是個殘疾皇子檐迟,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 由于迷宮的問題難度太大,有些人沒有及時完成码耐,所以這一篇晚發(fā)出一天追迟。通過迷宮的問題,暴露出大家對遞歸掌握的不是很好骚腥,...
    天花板閱讀 1,479評論 6 16
  • 今天我們來講解一下上一篇的課后習題敦间。 1. 題目 編程實現(xiàn)把1~9九個數(shù)字填入九宮格中,滿足每行束铭、每列和對角線上的...
    天花板閱讀 1,589評論 5 16
  • 上一篇的迷宮問題難倒了很多人廓块,對于初學者這個相對綜合的問題可能的確有點難,不過并非完成不了契沫。我們今天就來看看初學者...
    天花板閱讀 1,838評論 10 29
  • 第一期的編程手把手計劃即將結(jié)束带猴,在最后一篇文章里我們來聊聊如何用VS進行程序調(diào)試。之前提到過懈万,VS是一個強大的ID...
    天花板閱讀 1,816評論 5 16
  • 大家好拴清,我是漠子家的以琳,很高興又在pd故事會和大家見面啦会通!本周分享的工具卡是糾正前先連接口予。 工具卡上是這么詮釋的...
    王以琳閱讀 1,163評論 0 51