天天看點

2014秋C++ 第11周項目 函數及其應用

【項目1-函數版星号圖】

這一組的練習意在通過調用函數輸出星号圖,體會與了解函數的工作過程,并為其後編制自定義函數實作特定功能。

(1)補充完下面的程式,使程式輸出星号圖:

2014秋C++ 第11周項目 函數及其應用

(2)根據main函數中對printchs函數的調用,以及printchs的功能要求,編寫printchs函數。

2014秋C++ 第11周項目 函數及其應用

(3)在上面的程式中,隻改動一處,輸出下面的圖形:

2014秋C++ 第11周項目 函數及其應用

(4)利用printchs函數,再實作以前寫過的其他星号圖,體會定義函數帶來了的好處。

【項目2-求最大公約數】

(1)輸入兩個數,并求出其最大公約數

(2)在上面程式基礎上,增加函數gcds函數的聲明和定義,實作求4數最大公約數的功能

提示:①既然gcd函數已經實作了求兩數最大公約數的功能,gcds可以調用gcd分别求出兩對的最大公約數,再求最大公約數的最大公約數;②修改main函數,以完成對新新定義的函數的測試。

(3)利用單步調試工具,step into到函數内部觀察程式的運作,掌握進入到函數“内部”觀察其運作情況的方法。

【項目3-程式的多檔案組織】

學會用多個檔案組織程式,這在大型軟體項目開發中,是必須要采用的手段,我們在小“項目”上開刀。請将下面的程式中的代碼分别儲存在兩個檔案中,利用多檔案的方式組織。

main.cpp(也可以是别的名字)

fun.cpp(也可以是别的名字)

【項目4-特殊三位數】

請輸出滿足條件n=a!+b!+c!的所有三位數n,其中,a、b、c分别是n的百、十、個位數。要求用自定義函數實作求階乘。

【項目5-當年第幾天】

定義一個函數,其參數為年、月、日的值,傳回這一天為該年的第幾天。要求在main函數中輸入年月日,然後調用這個函數求值,并在main函數中輸出結果。

【項目6-回文、素數】

(1)編制一個函數reverse,傳回給定資料的“反序數”,例如輸入1234,輸出4321。請編制reverse函數,在下面代碼的基礎上補充相關的部分,實作要求的功能。

算法提示:流程圖及其示例見圖。

2014秋C++ 第11周項目 函數及其應用

(2)編制ispalindrome(),用于判斷參數是否是回文數——回文數,即從前往後讀和從後往前讀都一樣的數,如1122和121都是回文數,而1231、123都不是回文數。請編制ispalindrome(函數,在下面代碼的基礎上補充相關的部分,實作要求的功能。

(3)編制一個傳回值為bool型的函數isprimer(),用于判斷參數是否為素數(是素數傳回true,否則false),自編main函數用于測試;

(4)編制main函數,調用上面定義的3個函數,完成

輸出1000以内的所有素數。

輸出1000以内的所有回文數。

輸出1000以内的所有回文素數。

若一個素數的反序數仍為素數,則稱它為可逆素數。求10000以内的所有可逆素數。

(5)将上面自定義的3個函數放到一個cpp檔案中,而将main()函數放在另外一個cpp檔案中,改造上面的工作,用多檔案的方式組織程式。

*【項目7-太樂了】

(1)先聽故事,再程式設計式。

故事是這樣的:話說sin和cos是一對夫婦。一天,sin去聽相聲了,cos在家。過了一會,有人敲門,cos開門一看,是一個不認識的多項式函數。cos問:你是誰啊?他說:我是你的老公sin啊。cos說:你不是去聽相聲了嗎?怎麼成這幅摸樣了?sin說:是啊,太樂了!

故事講完了。下面是sin函數的泰勒展式:

2014秋C++ 第11周項目 函數及其應用

(注:x取弧度值,而非角度值)

用sin泰勒展式編寫程式,求出sin(π/2)和sin(56°)的值,精度要求達到小數點後6位(即當最後一項的絕對值小于0.00001時,累加結束,求絕對值的函數也可以自定義函數myabs實作)。

下面是程式模闆,請完成自定義函數的聲明和定義,并将main函數中下劃線部分補充完整。

說明:sin聽相聲“太樂”了,變成了多項式,連太太cos都不認識了。利用泰勒公式将任意函數展開為多項式進行計算,是計算機求解數值問題的一個重要手段。高等數學中的“泰勒定理”為我們解決這一大類問題提供了理論依據與方法指導。高等數學、線性代數等課程為我們提供解決各種問題的基礎知識,是大學中最為實用的學科,學好,必須的。

實際上,c++的數學庫(#include<cmath>)中已經提供了sin和cos函數,一般解題中我們直接調用即可,而本題要求自定義函數實作,為差別起見,分别起名為mysin和mycos。

提示:程式的輸出應該為:

sin(π/2)的值為1

sin(56°)的值為0.829038

(2)将上面的工作用多檔案組織起來。其中,main()函數儲存在一個檔案中,所有自定義函數儲存到另外一個檔案中,運作程式并得到正确的結果,體會在實際的工程項目中這樣組織程式的好處。

繼續閱讀