實驗目的
掌握函式宣告、定義和使用的方法
掌握函式遞迴呼叫的方法
掌握全域性變數、區域性變數、靜態變數的使用方法
掌握過載函式及預設函式引數的使用方法
實驗內容
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執行塊中進行迴圈結構控制。了解游標的概念,掌握游標的...