天天看點

《C語言及程式設計》實踐項目——函數起步

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

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

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

《C語言及程式設計》實踐項目——函數起步

(2)根據main函數中對printchs函數的調用,以及printchs的功能要求,編寫printchs函數,使下面的程式能輸出星号圖:

《C語言及程式設計》實踐項目——函數起步

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

《C語言及程式設計》實踐項目——函數起步

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

【項目2-求解分段函數的值】

《C語言及程式設計》實踐項目——函數起步

提示:函數求解的結果要在main()中使用,要用return <表達式>得到傳回值。

通過這個項目,體會函數利用傳回值的方法。

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

(1)輸入兩個數,并求出其最大公約數。請寫出求最大公約數的函數

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

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

【項目4-求階乘函數】

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

(2)求組合數:求組合數公式為:

《C語言及程式設計》實踐項目——函數起步

編一程式,輸入m和n的值,求組合數。要求分别定義求階乘和求組合的函數,求組合數的函數調用求階乘的函數來實作求解,在main()函數中,負責輸入輸出及調用求組合數的函數。

【項目5-當年第幾天】

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

【項目6-回文、素數】

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

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

《C語言及程式設計》實踐項目——函數起步

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

(3)編制一個傳回值為int型的函數isprimer(),用于判斷參數是否為素數(是素數傳回1-真,不是回文,傳回0-假),自編main函數用于測試。

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

輸出1000以内的所有素數。

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

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

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

【項目7-太樂了】

先聽故事,再程式設計式。

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

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

《C語言及程式設計》實踐項目——函數起步

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

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

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

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

實際上,c語言的數學庫(#include<math.h>)中已經提供了sin和cos函數,以及求絕對值的函數fabs,一般解題中我們直接調用即可,而本題要求自定義函數實作,為差別起見,分别起名為mysin、mycos、myabs。

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

繼續閱讀