09上機實驗五函式與程式結構

2022-09-04 19:15:07 字數 1273 閱讀 6219

實驗目的

掌握函式宣告、定義和使用的方法

掌握函式遞迴呼叫的方法

掌握全域性變數、區域性變數、靜態變數的使用方法

掌握過載函式及預設函式引數的使用方法

實驗內容

1. 分析程式執行結果

輸入下列程式,執行它,分析得到的結果。

#include <>

int n = 0;

int func(int x = 10);

void main()

int func(int x )

[實現要求]:

● 執行該程式,得到執行結果

● 分析得到的結果,說明為什麼得到這樣的結果

2. 遞迴與非遞迴函式

編寫乙個函式,求從n個不同的數中取r個數的所有選擇的個數。其個數值為:

其中: n! = n*(n-1)*(n-2)*...*1。

[測試資料]:

輸入:5 3

輸出:10

輸入:10 20

輸出:input invalid !

輸入:-1 4

輸出:input invalid!

輸入:50 3

輸出:19600

輸入:0 0

程式結束

[實現要求]:

(1) 分別用遞迴和非遞迴兩種方式完成程式設計;

(2) 主程式中設計乙個迴圈,不斷從輸入接收n和r的值,計算結果並輸出,當使用者輸入0 0時,程式結束;

(3)能檢查輸入資料的合法性,要求n>=1並且n>=r;

(4)上面的測試資料能得到正確結果。

[實驗步驟]

(1) 利用乙個非遞迴函式fn(int n)計算n!,利用另乙個函式cnr(int n, int r)計算cnr,在該函式中呼叫fn(),

問題:你打算用什麼樣的變數型別來存放n!函式返回的值?注意各種資料型別的記憶體字長不同,整數能存放的資料範圍有限,你如何解決?

(2) 利用乙個遞迴函式實現,實現時利用公式:

c(n,r) = c(n, r-1) * (n – r + 1) / r

遞迴實現.

[實現提示]:

(1) 可以用double資料型別來存放函式的計算結果

(2) 遞迴結束條件:

如果 r = 0 ,則c(n, r) = 1

如果 r = 1, 則c(n, r) = n

[思考問題]

(1) 你對各種資料型別的字長是否有了新的認識?

(2) 遞迴函式的書寫要點是什麼?

(3) 你覺得遞迴和非遞迴函式哪種好些?

函式與程式結構實驗實驗報告

c語言程式設計實驗報告 專業 電腦科學與技術班級 電腦科學與技術創新實驗班日期 2011 12 12成績 實驗組別第次實驗指導教師 學生姓名學號同組人姓名 實驗名稱 函式與程式結構實驗 1 實驗目的 1 熟悉和掌握函式的定義 宣告,函式的呼叫和引數傳遞方法,以及函式返回值型別的定義和返回值的使用。2...

實驗選擇結構程式結構

實驗五 選擇與迴圈結構 一 實驗目的 1 掌握建立和執行m檔案的方法。2 掌握利用if語句實現選擇結構的方法。3 掌握利用switch語句實現多分支選擇結構的方法。4 掌握try語句的使用。5 掌握利用for語句實現迴圈結構的方法。6 掌握利用while語句實現迴圈結構的方法。7 熟悉利用向量運算來...

實驗六程式結構及游標

實驗六 pl sql程式結構及游標 一 實驗學時 2學時二 實驗型別 驗證性實驗。三 實驗目的和主要內容 掌握pl sql程式的各組成部分,掌握pl sql的控制結構。主要內容包括 1.在sql plus中定義pl sql塊處理。2.在pl sql執行塊中進行迴圈結構控制。了解游標的概念,掌握游標的...