c筆記07---遞歸,清空緩衝區,漢諾塔,隨機數,重複數,exit(),return

1.    fflush(stdout);
    這條語句可以把輸出緩衝區裏的內容立刻顯示在屏幕上;

2.    return; 結束當前函數
    exit(); 結束整個程序,需要在程序開頭處加入 #include <stdlib.h>

4.    使用數組作形參和實參是同一個數組,函數中修改了數組的內容,調用函數可以看到數組的變化。
    若不用數組形參,而使用其他形參,很可能無法計算,因爲函數結束,形參也就消失了。

5.    數組形參無法用 sizeof 計算出數組行參大小;
    只有在主函數裏面算出數組大小,然後傳給形參數組:
        void xingcan(int value[], int num){}
        
6.    輸入一個整數,如果不是,提示重新輸入:(scanf類型不匹配,返回 0)
    while(!(scanf("%d", &data)))
    {
        scanf("%*[^\n]");        // * 忽略讀到的內容,[^\n]任何非\n的字符,將\n之前所有字符讀走
        scanf("%*c");            // 從緩衝區讀取一個字符,忽略掉。
        printf("請重新輸入整數:");
    }    
    上面兩條語句起到清空緩衝區的作用。
        
7.    遞推思路:用循環解決問題;
    遞歸思路:用遞歸函數解決問題;

8.    漢諾塔:(han.c)
    han(int num, char left, char mid, char right)    // num盤子數目,left,mid,right爲三個柱子,且盤子剛開始在left柱子上
    {
        if(1 == num)                                  // 遞歸一定要有分支
            printf("把第%d個盤子從%c移動到%c\n", num, left, right);
        else
        {
            han(num - 1, left/*確定*/, right/*添加*/, mid/*確定*/);
            // 先確定此處 left 和 mid 位置,先由 left->mid,最後添加 right
            printf("把第%d個盤子從%c移動到%c\n", num, left, right);
            han(num - 1, mid/*確定*/, left/*添加*/, right/*確定*/);
            // 再把中間的移到最右邊
        }
    }
    int main()
    {
        han(3, 'A', 'B', 'C');
    }

9.    生成隨機數代碼如下:
        #include <stdlib.h>
        #include <time.h>
        int data = time(0);
        srand(data);
        int result = rand();

    rand(); 生成隨機數,(僞隨機數)如:int data = rand();
    srand 設置隨機種子,生成隨機數,通過rand()返回;如:srand(data); int result = rand();
    time 用來獲取1970年零點到現在的秒數;當參數爲 0 時,獲取到的秒數通過返回值來返回:如:int data = time(0);    

10.    重複數字個數:(chongfu.c)
    int arr[10] = {0};
    do {
        arr[data % 10]++;        // 計算出重複數字個數
        data /= 10;
    } while (data != 0);
    

11.    輸出內容能夠到達屏幕的條件有下面四點:
        \n
        程序結束
        輸出緩衝區滿(4kb)
        人工刷新 fflush

發佈了57 篇原創文章 · 獲贊 19 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章