第六章 函數和宏定義實驗(2)

C程序設計實驗報告

實驗項目:

1、利用復化梯形公式計算定積分
2、計算Ackerman函數
3、編寫計算x的y次冪的遞歸函數getpower(int x,int y),并在主程序中實現輸入輸出
4、編寫計算學生年齡的遞歸函數
5、編寫遞歸函數實現Ackman函數

姓名:王錦輝 實驗地點: 514實驗室 實驗時間:2019.5.16


一、實驗目的與要求一、實驗目的與要求

1.利用復化梯形公式計算定積分
  • 掌握C語言中定義函數的方法;
  • 掌握通過“值傳遞”調用函數的方法;
2.計算Ackerman函數
  • 掌握遞歸函數的設計方法;
  • 進一步練習閱讀檢查與調試修改C程序的方法;
3.編寫計算x的y次冪的遞歸函數getpower(int x,int y),并在主程序中實現輸入輸出
  • 寫出解決該問題的遞歸算法:
    1616359-20190519184129433-876216744.png
  • 在遞歸函數中,使用數字1 作為回歸條件;
  • 在遞歸函數中,使用 if_else 語句根據條件的真假來決定是遞推還是回歸。
4.編寫計算學生年齡的遞歸函數
  • 寫出解決該問題的遞歸算法:
    遞歸公式如下,根據公式容易寫出遞歸程序。
    1616359-20190519184216331-572092436.png
  • 在遞歸函數中,使用數字1 作為回歸條件;
  • 在遞歸函數中,使用if_else語句根據條件的真假來決定是遞推還是回歸。
5.編寫遞歸函數實現Ackman函數
  • 根據遞歸公式編寫遞歸函數;
  • 在遞歸函數中,使用if_else語句根據條件的真假來決定是遞推還是回歸。

二、實驗內容

6.4.2.2

1、 問題的簡單描述:
(1)編制一個函數sab(a,b,n),其功能為利用復化梯形公式計算定積分
1616359-20190519185139890-1927737703.png
其中n為對區間[a,b]的等分數。要求該函數在一個獨立的文件中。
(2)編制一個主函數以及計算被積函數值的函數 f(x),在主函數中調用(1)中的函數sab(a,b,n)計算并輸出下列積分值
1616359-20190519185204743-152487869.png
要求主函數與函數f(x)在同一文件中。
(3)編制另一個主函數以及計算被積函數值的函數 f(x),在主函數中調用(1)中的函數sab(a,b,n)計算并輸出下列積分值
1616359-20190519185225700-500772342.png
同樣要求主函數與函數f(x)在同一文件中。
(4)要求畫出模塊sab()的流程圖。
方法說明:
設定積分為
1616359-20190519185242345-465533077.png
則復化梯形求積公式為
1616359-20190519185257702-1545695506.png
其中h=(b-a)/n,Xk=a+kh。

2.程序流程圖:

1616359-20190519192545615-160119677.png

3、實驗代碼:

#include<stdio.h>
double f(double x);
double sab(double a, double b,int n)
{int k;double h,result,x1,x2,x3=0,t;h=(b-a)/n;x1=f(a);x2=f(b);for (k=1;k<=n-1;k++){t=a+k*h;x3=x3+f(t);}result=h*(x1+x2)/2+h*x3;return result;
}
#include<stdio.h>
#include<math.h>
#include"sab.h"
double f(double x)
{double result;result=x*x*exp(x);return result;
}
main()
{double a,b,result;int n;printf("請輸入a,b,n的值:");scanf("%lf%lf%d",&a,&b,&n);result=sab(a,b,n);printf("sab(%lf,%lf,%d)=%f",a,b,n,result);return 0;
}
#include<stdio.h>
#include"sab.h"
double f(double x)
{double result;result=1/(25+x*x);return result;
}
main()
{double a,b,result;int n;printf("請輸入a,b,n的值:\n");scanf("%lf%lf%d",&a,&b,&n);result=sab(a,b,n);printf("sab(%lf,%lf,%d)=%lf",a,b,n,result);return 0;
}

附圖:
1616359-20190519193547207-1134638972.png
1616359-20190519193555087-615022268.png

6.4.2.3

1、問題的簡單描述:具體要求:
(1)根據方法說明,編制計算Ackerman函數的遞歸函數ack(n,x,y)。
(2)編制一個主函數,由鍵盤輸入n,x,y,調用(1)中的函數ack(n,x,y),計算Ackerman函數。
(3)在主函數中,輸入之前要有提示,并檢查輸入數據的合理性,若輸入的數據不合理,則輸出錯誤信息,輸出要有文字說明。
(4)輸入(n,x,y)=(2,3,1)運行該程序。然后自定義幾組數據再運行該程序。
方法說明:
Ackerman函數的定義如下:

n,x,y為非負整數,且
1616359-20190519193911275-1550455382.png

2、流程圖:

1616359-20190519194017864-246494919.png

3、實驗代碼:

#include<stdio.h>
int Ack(int n,int x,int y)
{int a;if(n==0)a=x+1;else if(n==1&&y==0)a=x;else if(n==2&&y==0)   a=0;else if(n==3&&y==0) a=1;else if(n==4&&y==0)   a=2;else if(n!=0&&y!=0)a=Ack(n-1,Ack(n,x,y-1),x);   return a;
}
main()
{int n,x,y,result;printf("Please input n,x,y:");scanf("%d%d%d",&n,&x,&y);if(n<0||x<0||y<0)printf("輸入錯誤,請重新輸入!\n"); result=Ack(n,x,y);printf("Ack(%d,%d,%d)=%d\n",n,x,y,result);
}

附圖:
1616359-20190519194816588-597089502.png

6.4.3.1

1、問題的簡單描述:編寫程序,分別從鍵盤輸入數據x和y,計算x的y次冪并輸出。

2、流程圖:

1616359-20190519195900821-1366362806.png

3、實驗代碼:

#include<stdio.h>
long getpower(int x,int y)
{if(y==1)return x;elsereturn x*getpower(x,y-1);
}
main()
{int num,power;long answer;printf("輸入一個數:");scanf("%d",&num);printf("輸入冪次方:");scanf("%d",&power);answer=getpower(num,power);printf("結果是:%ld\n",answer);
}

附圖:
1616359-20190519200106676-1223956100.png

6.4.3.2

1.問題的簡單描述:用遞歸方法計算學生的年齡。已知第一位學生年齡最小為10歲,其余學生一個比一個大2歲,求第5位學生的年齡。

2、流程圖:

1616359-20190519200156949-1471469574.png

3、實驗代碼:

#include<stdio.h>
int age(int n)
{int c;if(n==1)c=10;elsec=age(n-1)+2;return c;
}
main()
{int n=5,result;result=age(n);printf("第五位學生的年齡是%d歲",result);
}

附圖:
1616359-20190519200406089-207060713.png

6.4.3.3

1、問題的簡單描述:
定義遞歸函數實現下列Ackman函數:
1616359-20190519200458853-2069671721.png
其中m,n為正整數,設計程序求Acm(2,1),Acm(3,2)。

2、流程圖:

1616359-20190519200846609-1535111788.png

3、實驗代碼:

#include<stdio.h>
Acm(int m,int n)
{if(m==0)return n+1;if(n==0)return Acm(m-1,1);if(n>0&&m>0)return Acm(m-1,Acm(m,n-1));
}
int main()
{int f=2,g=1,k=3;printf("Acm(2,1)=%d\nAcm(3,2)=%d",Acm(f,g),Acm(k,f));return 0;
}

附圖:
1616359-20190519201012185-886108758.png


三、實驗總結

???????這次實驗有比較簡單的題目也有比較難的,但是如果能做到提前預習,并且能把每一小節的知識靈活運用,相對來說我們的學習會更加高效且輕松。

轉載于:https://www.cnblogs.com/chenxiqiming/p/10890201.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277688.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

將控件保存為圖片

原文:將控件保存為圖片將控件保存為圖片 周銀輝 這里分別提供win form 和 wpf 兩種方式 對于.net 2.0 我們可以簡單地利用 BitBlt 函數來實現&#xff0c;非常簡單&#xff0c;代碼如下&#xff1a; publicstaticclassControlToImageConverter { privateconstInt32 S…

Linux基礎命令---get獲取ftp文件

get 使用lftp登錄ftp服務器之后&#xff0c;可以使用get指令從服務器獲取文件。 1、語法 get [-E] [-a] [-c] [-O base] rfile [-o lfile] 2、選項列表 選項 說明 -o 指定輸出文件的名字&#xff0c;不指定則使用原來的名字 -c 如果失敗&#xff0c;持續獲取 -E 獲取…

Unity3D學習筆記之二資源導入以及工程管理

本次教程&#xff0c;我們來建立自己的一個工程并導入模型&#xff0c;對模型進行處理。特別說明&#xff1a;這系列教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》&#xff0c;本博客中采用的模型和方法均來源于此。這是我瀏覽過好多教程后覺得講…

關于cocos creator換裝功能的實踐與思考

2019獨角獸企業重金招聘Python工程師標準>>> 最近在做一個基于cocos creator的微信小游戲&#xff0c;其中一個主要的功能是給角色進行換裝。先來說下開發環境&#xff1a; cocos creator1.9.3spine 在官方的文檔中只有設置皮膚的接口&#xff0c;實際上是存在可以部…

pl/sql查詢表數據,報錯ORA-03115:不支持的網絡數據類型或表示法

今天測試人員遇到一個問題&#xff1a;pl/sql查詢表數據&#xff0c;報錯ORA-03115&#xff1a;不支持的網絡數據類型或表示法 我在plsql上查詢這張表是沒有問題的&#xff0c;去看了那張表&#xff0c;發現有個字段類型是binary_double&#xff0c; 查資料發現這是oracle10才出…

抖店一件代發實操,干貨滿滿!

我是電商珠珠 沒有貨源的新手&#xff0c;在店鋪剛開始的時候可以搞無貨源模式&#xff0c;也就是一件代發&#xff0c;去搬運別人店鋪的商品到自己店鋪&#xff0c;再去利用信息差去賺取差價。 很多人不知道具體要怎么做&#xff0c;今天我就來給大家講一講。 一、入駐 入…

Unity3D學習筆記之三Prefab組件的使用

本次教程&#xff0c;我們來創建一個簡單的Prefab組件。教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》。說到Prefab&#xff0c;中文翻譯為預設體&#xff0c;在Unity官方的書本《Unity4.X從入門到精通》中的解釋是&#xff1a;可以理解為是一個…

JavaScript之閉包

不少開發人員總是搞不清匿名函數和閉包這兩個概念&#xff0c;因此經常混用。閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常見方式&#xff0c;就是在一個函數內部創建另一個函數 --《JavaScript高級程序設計》 轉載于:https://www.cnblogs.com/songsongblue/…

【躍遷之路】【522天】程序員高效學習方法論探索系列(實驗階段279-2018.07.12)...

(躍遷之路)專欄 【躍遷之路】獎勵金計劃正式開始 從2018.7.1起&#xff0c;【躍遷之路】獎勵金計劃正式起航&#xff0c;從今以后&#xff0c;每月1日&#xff0c;我會將自己個人上月收入的1%計入【躍遷之路】獎勵金池&#xff0c;積累到足夠金額后&#xff0c;將適時用于獎勵那…

迷茫在路口——致我的2014

今天是2015年一月一日&#xff0c;2014年已經過去了。這意味著再過六個月整&#xff0c;我就要大學畢業&#xff0c;開始為自己的未來拼搏。這一年&#xff0c;我過的充實且迷茫。說2014充實&#xff0c;是因為我從寒假結束到有一個寒假的到來&#xff0c;幾乎沒有怎么閑下來&a…

Codeforces 173E Camping Groups 線段樹

Camping Groups 我們先計算出&#xff0c; 每個點當leader所能掌控的最多人數。 然后我們把詢問離線&#xff0c; 丟到responsibility最大的那個地方去。 然后從大到小往線段樹里加人&#xff0c; 加入完之后處理掉當前的詢問。 如果強制在線的話就只能樹套樹啦。 #include<…

tomcat閃退解決方案

在這幾天&#xff0c;遇到一個Tomcat啟動閃退的問題&#xff0c;通過查閱各種資料&#xff0c;算是完美解決。在此分享給朋友們。 首先&#xff0c;確定你的問題在哪里 1.查詢錯誤&#xff1a;winR 輸入cmd&#xff0c;進入一般處理程序。通過cd 找到你Tomcat的bin文件夾&#…

《古劍奇譚2》詳細測評心得

期待已久的《古劍奇譚2》。仔仔細細的玩下來給我的感覺還是不錯的。燭龍也不愧是國產單機的良心公司了&#xff0c;回合制的戰斗方式改成了即時戰斗類。 的確&#xff0c;國產動作類的游戲經驗目前等于零。《古劍2》一改以往國產網游的作風跳出了回合制的圈子實屬不易&#xff…

LeetCode 581. 最短無序連續子數組(Shortest Unsorted Continuous Subarray)

581. 最短無序連續子數組581. Shortest Unsorted Continuous Subarray 題目描述 給定一個整型數組&#xff0c;你需要尋找一個連續的子數組&#xff0c;如果對這個子數組進行升序排序&#xff0c;那么整個數組都會變為升序排序。 你找到的子數組應是最短的&#xff0c;請輸出它…

NFS4文件鎖機制探秘

2019獨角獸企業重金招聘Python工程師標準>>> 簡介 NFS4實現“租賃鎖”。每個鎖擁有一樣的“租賃期”。客戶端的讀寫操作將刷新“租賃期”。租賃期到期后&#xff0c;鎖將被服務器釋放。NFS4通過下述“模型”實現對鎖的管理&#xff1a; 1) 清晰地劃分客戶端和服務器…

Stay Hungry Stay Foolish——網絡學習平臺分享

從1月24號回家也有一陣子了&#xff0c;今天已經是31號&#xff0c;這一個周的中心思想就是一個字&#xff0c;玩。 學生一但遠離學校&#xff0c;就會碰到許多學習的阻力&#xff0c;有來自外界的&#xff0c;家里有活要干&#xff0c;有親戚要訪&#xff0c;有同學邀約&…

linux_check

linux_check echo "********CPU****************" echo 總核數 物理CPU個數 X 每顆物理CPU的核數 echo " 總邏輯CPU數 物理CPU個數 X 每顆物理CPU的核數 X 超線程數"echo 查看物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| un…

Unity3D學習筆記之四完善Prefab并添加First Person Controller

好久沒學東西并用博客記錄了&#xff0c;這個年過的很懶散&#xff0c;慢慢臨近開學了&#xff0c;也要提前適應一下&#xff0c;寫寫東西&#xff0c;這樣開學才能更好的進入狀態呀&#xff5e;&#xff5e;本次筆記中&#xff0c;我們將來雕琢一個更加完善的Prefab&#xff0…

高精度(壓位+判負數+加減乘+讀寫)

本算法目前屬于還處于測試狀態&#xff0c;歡迎Hack&#xff01; struct gj{bool fu; //是否是負數int tt,mod; //高精的長度int s[40005]; //壓位用的數組inline gj(){ //整體初始化fu0; tt0; mod1e9;memset(s,0,sizeof(s));}inline gj read(){ register char ch; //高精度讀…

Hadoop從安裝Linux到搭建集群環境

簡介與環境準備  hadoop的核心是分布式文件系統HDFS以及批處理計算MapReduce。近年&#xff0c;隨著大數據、云計算、物聯網的興起&#xff0c;也極大的吸引了我的興趣&#xff0c;看了網上很多文章&#xff0c;感覺還是云里霧里&#xff0c;很多不必要的配置都在入門教程出現…