第六章函式與巨集定義實驗報告(後半部分)

2022-07-12 07:57:10 字數 3222 閱讀 5527

實驗專案:函式與巨集定義實驗報告

一、實驗目的與要求

1、利用復化梯形公式計算定積分

①掌握c語言中定義函式的方法

②掌握通過「值傳遞」呼叫函式的方法

2、計算ackerman函式

①掌握遞迴函式的設計方法

②進一步練習閱讀檢查與除錯修改c程式的方法

3、編寫計算x的y次冪的遞迴函式getpower(int x,int y),並在主程式中實現輸入輸出

①寫出解決該問題的遞迴演算法:

②在遞迴函式中,使用數字1作為回歸條件

③在遞迴函式中,使用if-else語句根據條件的真假來決定是遞推還是回歸

4、編寫計算學生年齡的遞迴函式

①寫出解決該問題的遞迴演算法

遞迴公式如下,根據公式容易寫出遞迴程式:

②在遞迴函式中,使用數字1作為回歸條件

③在遞迴函式中,使用if-else語句根據條件的真假來決定是遞迴還是回歸

5、編寫遞迴函式實現ackman函式

①根據遞迴公式編寫遞迴函式

②在遞迴函式中,使用if-else語句根據條件的真假來決定是遞迴還是回歸

二、實驗內容

1、實驗練習

①問題描述:(1)編制乙個函式sab(a,b,n),其功能為利用復化梯形公式計算定積分

其中n為對區間【a,b】的等分數。要求該函式在乙個獨立的檔案中。

(2)編制乙個主函式以及計算被積函式值得函式ƒ(x),在主函式中呼叫(1)中的函式sab(a,b,n)計算

要求主函式與函式ƒ(x)在同乙個檔案中。

(3)編制另乙個主函式以及計算被積函式值的函式ƒ(x),在主函式中呼叫(1)中的函式sab(a,b,n)計算並輸出下列積分值

同樣要求主函式與函式ƒ(x)在同一檔案中。

(4)要求畫出模組sab()的流程圖。

②流程圖:

③插入**:

#includedouble f(double

x);double sab(double a,double b,int

n)

return h*(x1+x2)/2+h*x3;

}

#include#include

#include

"sab.h

"double f(double

x)main()

#include#include

"sab.h

"double f(double

x)main()

④執行結果:

⑤問題分析:這道題是這裡面我覺得最難的,一開始就卡了我好久,一開始不知道要分成三個檔案放,其次是檔案的命名也搞錯了,導致函式呼叫不了,一直卡在這道題,後面果斷放棄了,去做後面的題目了,最後在同學的幫助下解決了這個問題,這道題也懂了。

2、實驗練習

①問題描述:(1)根據方法說明,編制計算ackerman函式的遞迴函式ack(n,x,y)

(2)編制乙個主函式,由鍵盤輸入n,x,y,呼叫(1)中的函式ack(n,x,y),計算ackerman函式

(3)在主函式中輸入之前要有提示,並檢查輸入資料得合理性,若輸入的資料不合理,則輸出錯誤資訊。輸出要有文字說明。

(4)輸入(n,x,y)=(2,3,1)執行該程式。然後自定義幾組資料在執行該程式。

②流程圖:

③插入**:

#includeint ack(int n,int x,int

y)main()

④執行結果:

⑤問題分析:在這道題中我遇到的問題是在return a的上一句中把ack寫成了小寫,最後導致執行不出來。最後檢查**時發現了錯誤並解決了。

3、實驗練習

①問題描述:編寫程式,分別從鍵盤輸入資料x和y,計算x的y次冪並輸出。

②流程圖:

③插入**:

#includelong getpower(int x,int

y)main()

④執行結果:

⑤問題分析:這道題在執行時比較順利,根據流程圖以及提示一次性就能完成。

4、實驗練習

①問題描述:用遞迴方法計算學生的年齡。已知第一位學生年齡最小為10歲,其餘學生乙個比乙個大2歲,求第5位學生的年齡

②流程圖:

③插入**:

#includeint age(int

n)main()

intmain()

④執行結果:

⑤問題分析:在這道題中我遇到了一些問題,一直解決不了,比如在條件判斷中我已開始用的是if-else的語句來實現,最後發現我的if-else語句老是對不上,最後換成if語句來實現。還有就是比較粗心,再輸入**的過程中中文與英文的符號有時會搞錯了,導致執行不出來。

三、實驗小結

總結:總的來說c語言學到這裡已經學了一半了,大概也掌握了一些知識,比一開始敲**好了很多,這次實驗都比較典型,不知是因為剛開始的第一題就被難到了,還是怎麼的,後面敲**的時候就特別的煩躁。第一題卡了好久。不過後面在同學的幫助下還是解決了。還是挺開心的,每次上實驗課,都感覺挺不好意思的,每次都會遇到一些問題自己解決不了,就會麻煩同學。

第六章 實驗

實驗目的和要求 了解靜態聯編的動態聯編的概念。掌握動態聯編的條件。實驗內容 1.分析並除錯下列程式。include using namespace std class base 1 找出以上程式中使用了過載和覆蓋函式。2 寫出程式的輸出結果,並解釋輸出結果。程式的輸出結果如下 分析 在程式中pb是基...

第六章函式

第六章 函式 重要知識點 1 函式定義的語法形式 資料型別 函式名 形式參數列 關於函式的定義有如下說明。函式的資料型別是函式的返回值型別 若資料型別為void,則無返回值 函式名是識別符號,乙個程式中除了主函式名必須為main外,其餘函式的名字按照識別符號的取名規則可以任意選取。形式引數 簡稱形參...

第六章 函式

示例 使用函式列印菱形 include intprint star int main intprint star int i,j for i 0 i 4 i 定義無參函式 函式名後面的括號中是空的,沒有任何引數,定義無參函式的一般形式為 型別名 函式名 或 型別名 函式名 void 函式體包括宣告部...