Day08 掃雷遊戲練習 函式(呼叫 實參 形參)

2021-07-16 08:28:59 字數 3261 閱讀 1313

掃雷練習:  在10*10矩陣中,隨機出現10個x

1#include

2#include

3int main();

6     srand(time(0));

7     do

15    }while(cnt<10);

16    for(row=0;row<=9;row++)

21            else if(arr[row][col]==-1)

24         }

25        printf("\n");

26     }

27    return 0;

28 }

掃雷遊戲全碼:

1#include

2 #include

3int main();

6     intdelta[2]=;

7     srand(time(0));

8     do

15    }while(cnt<10);

16    for(row=0;row<=9;row++)

21            for(i=0;i<=7;i++)

29                if(tmp_col<0||tmp_col>9)

32                 //如果周圍的某個格仔裡是地雷,就把當前格仔裡的數字加一

33                 if(map[tmp_row][tmp_col]==-1)

36            }

37 38        }

39     }

40    for(row=0;row<=9;row++)

45            else if(map[row][col]==-1)

48            else

51        }

52        printf("\n");

53     }

54    return 0;

55 }

函式:c語言程式中可以用分組的方式管理語句

每個語句分組叫做乙個函式

多函式程式執行模式有如下特點:

整個程式的執行時間被分解成幾段,每段時間被分給乙個函式使用

任何兩個時間段不能互相重疊,並且所有時間段必須連續

如果函式a在工作過程中把一段時間分配給函式b使用,則函式b在使用完所有時間之後必須把後面的時間還給函式a

如果函式a把時間分配給函式b,則它們之間存在函式呼叫關係

其中函式a叫做呼叫函式,函式b叫做被呼叫函式

函式呼叫關係有時間範圍,只有被呼叫函式工作期間,函式呼叫關係才存在

在程式中使用函式呼叫語句產生呼叫關係

不可以跨函式使用變數,不同函式裡的變數可以重名

如果乙個函式多次執行,則每次執行的時候內部變數對應的儲存區有可能不同

volatile關鍵字可以用來宣告變數,使用這個關鍵字宣告的變數每次取數的時候都可以得到儲存區里真正的數字。(防止別的程式往這個變數裡放數字改變值)

函式呼叫過程中通常伴隨著兩個函式之間的資料傳遞

資料傳遞存在兩個完全不同的方向,可能從呼叫函式向被呼叫函式傳遞,也可能從被呼叫函式向呼叫函式傳遞

任何乙個方向的資料傳遞都需要使用被呼叫函式提供的儲存區

只能從被呼叫函式向呼叫函式傳遞乙個資料,且只能在被呼叫函式結束時才能傳遞這個資料

這個資料叫做被呼叫函式的返回值

函式的返回值必須記錄在被呼叫函式提供的乙個專門的儲存區里,應該把這個儲存區的型別名稱寫在函式名稱前

在被呼叫函式裡使用return關鍵字向這個儲存區里存放返回值

呼叫函式直接把函式呼叫語句當數字使用就可以得到被呼叫函式的返回值

練習:編寫函式,從鍵盤得到兩個整數,計算它們的和並把結果傳遞給呼叫函式

1#include

2int sum(void)

10int main()

如果被呼叫函式裡沒有使用return關鍵字指定返回值,則存放返回值的儲存區里的內容是隨機的

這個儲存區不能用來長期存放數字,呼叫函式得到返回值以後立刻使用或者轉存到其它儲存區里

函式名稱前寫void表示函式沒有提供用來存放返回值的儲存區

如果函式名稱前什麼都沒寫,在c89規範裡表示函式提供了乙個整數型別儲存區用來存放返回值,c99規範裡不允許這樣

被呼叫函式不能使用陣列存放返回值

呼叫函式可以一次向被呼叫函式傳遞多個不同型別的資料,被呼叫函式需要提供多個儲存區存放這些資料

可以用一組變數表示這些儲存區,這組變數必須宣告在函式名稱後面的小括號裡

void print(int num,int num1)

這些變數叫做形式引數,小括號裡的內容統稱為形式引數列表

形式引數列表是用逗號連線的多個變數宣告語句,每個形式引數的型別名稱都不能省略

函式呼叫語句裡需要為每個形式引數提供乙個對應的資料,這些資料叫實際引數

函式呼叫的時候計算機把實際引數記錄到對應的形式引數裡,被呼叫函式可以從形式引數裡獲得實際引數的數值

1#include

2void print(int num,int num1)

5int main()

num、num1是形參, a、b是實參

所有能當數字使用的內容都可以當做實際引數使用

函式名稱後面的小括號裡寫void表示函式不需要從呼叫函式得到任何數字

如果小括號裡什麼都沒寫,表示函式可以提供任意多個任意型別的形式引數

練習:編寫函式,從呼叫函式得到兩個整數,計算它們的和,並把結果傳遞給呼叫函式

1#include

2int add(int a,int b)  

5int main() 

練習:編寫函式解決雞兔同籠的問題

從呼叫函式得到頭和腳的數量,然後計算出兔子的數量並傳遞給呼叫函式

1#include

2int rabbit(int heads,int legs)

8     }  

9}  

10int main()

練習:在螢幕上列印

1*9=9

2*8=16

3*7=21

4*6=24

5*5=25   每次函式執行列印一次內容

1#include

2int print(int a,int b)

5int main()

13    return 0;

14 }

學習筆記day08

單例設計模式 上圖中,想要實現a,b的配置資訊共享,因為a,b是兩個new,所以必然是不同的物件,一種方法就是將其配置資訊全部設成靜態,但資訊很多時會導致儲存資訊過多。單例設計模式流程 1,主函式main進棧,定義s1 2,等號右邊,single載入進入方法區,接著是single的建構函式。s和ge...

Day08 強制轉換

int i 128 byte c byte i 記憶體溢位 double b i 自動轉換 低 高 自動轉換 低 高 system.out.println i 128 system.out.println c 128 system.out.println b 1.不能對布林值進行轉換 2.不能把物件...

day08深淺拷貝

python深淺拷貝 是把原列表第一層的記憶體位址拷貝乙份給新列表。對於不可變型別拷貝本身id記憶體位址給新列表 原列表修改不可改變型別的值,新列表不會變 對於可變型別是拷貝可變型別容器本身的id給新列表 原列表修改其中內嵌可變型別的元素值,新列表也會變 例項 list jesse zhangsan...